From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../Fail Over Switches/FSV-4PFS-Datasheet.pdf | Bin 0 -> 82168 bytes .../Fail Over Switches/HA_Whitepaper.pdf | Bin 0 -> 103104 bytes .../Fail Over Switches/ISDNguard_en.pdf | Bin 0 -> 129523 bytes .../Trixbox_FB2_Heartbeat_Tutorial.pdf | Bin 0 -> 143924 bytes .../mat_bsc_arbeit/Fail Over Switches/berofos.pdf | Bin 0 -> 477854 bytes .../Fail Over Switches/fb2_data_sheet.pdf | Bin 0 -> 86837 bytes ...foneBRIDGE2%20Quick%20Install%20Guide%20v.1.pdf | Bin 0 -> 67256 bytes .../isdn_guard_installation_guide.pdf | Bin 0 -> 101300 bytes .../mat_bsc_arbeit/Fail Over Switches/pls_a.pdf | Bin 0 -> 203625 bytes ...w To Set Up A Load-Balanced MySQL Cluster 1.pdf | Bin 0 -> 138296 bytes ...w To Set Up A Load-Balanced MySQL Cluster 2.pdf | Bin 0 -> 103564 bytes ...w To Set Up A Load-Balanced MySQL Cluster 3.pdf | Bin 0 -> 116038 bytes ...w To Set Up A Load-Balanced MySQL Cluster 4.pdf | Bin 0 -> 101419 bytes ...w To Set Up A Load-Balanced MySQL Cluster 5.pdf | Bin 0 -> 106425 bytes ...w To Set Up A Load-Balanced MySQL Cluster 6.pdf | Bin 0 -> 107436 bytes ...w To Set Up A Load-Balanced MySQL Cluster 7.pdf | Bin 0 -> 106683 bytes ...w To Set Up A Load-Balanced MySQL Cluster 8.pdf | Bin 0 -> 113438 bytes .../BSc-Arbeit/mat_bsc_arbeit/Juel_4154_Riedel.pdf | Bin 0 -> 14884912 bytes ...eat und DRBD \302\253 Linux-Magazin Online.pdf" | Bin 0 -> 177819 bytes ...DRBD \303\202\302\253 Linux-Magazin Online.pdf" | Bin 0 -> 177819 bytes ...L 5 High Availability with DRBD 8 and Hea...pdf | Bin 0 -> 94650 bytes .../mat_bsc_arbeit/MultiportRepeater_Brochure.pdf | Bin 0 -> 186683 bytes ...1 Reference Manual __ 14 High Availabilit...pdf | Bin 0 -> 52136 bytes .../NGNSwitch_Dallas_10262006.pdf David Zimmer.pdf | Bin 0 -> 2176437 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/AMA-2007.pdf | Bin 0 -> 396310 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/BAD-2001.pdf | Bin 0 -> 184297 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/CLU-2007.pdf | Bin 0 -> 102030 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/DAV-2006.pdf | Bin 0 -> 179744 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/ELL-2007.pdf | Bin 0 -> 258893 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/FAQ-2007.pdf | Bin 0 -> 71299 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/GAB-2004.pdf | Bin 0 -> 136509 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/LIN-2005.pdf | Bin 0 -> 234124 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/MIL-1997.pdf | Bin 0 -> 44916 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/REI-2000.pdf | Bin 0 -> 477969 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/RIC-2006.pdf | Bin 0 -> 171868 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2000.pdf | Bin 0 -> 87380 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2007.pdf | Bin 0 -> 67191 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/SAT-2004.txt | 14395 +++++++ .../BSc-Arbeit/mat_bsc_arbeit/Quellen/SEI-2007.pdf | Bin 0 -> 119624 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/SPE-2004.pdf | Bin 0 -> 350797 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/SUN-1999.ps | 14251 +++++++ .../BSc-Arbeit/mat_bsc_arbeit/Quellen/USG-2007.pdf | Bin 0 -> 687492 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/ZAB-2004.pdf | Bin 0 -> 179686 bytes .../BSc-Arbeit/mat_bsc_arbeit/Quellen/ZHA-1999.ps | 37443 +++++++++++++++++++ .../Scaling Internet Services by LinuxDirector.pdf | Bin 0 -> 786497 bytes .../BSc-Arbeit/mat_bsc_arbeit/VRRP_WhitePaper.pdf | Bin 0 -> 367000 bytes ... EAC \302\253 03 \302\253 2005 \302\253 ...pdf" | Bin 0 -> 146895 bytes ... \303\202\302\253 2005 \303\202\302\253 ...pdf" | Bin 0 -> 146895 bytes .../_BioCluster_Protocol_Description_.pdf | Bin 0 -> 29495 bytes .../mat_bsc_arbeit/_BioCluster_User_Guide_.pdf | Bin 0 -> 26100 bytes ...Print_-_Getting_Free_Long_Distance__Part_2_.pdf | Bin 0 -> 28422 bytes ...hive__273_DUNDi_Tutorial_for_Asterisk_Home_.pdf | Bin 0 -> 126973 bytes .../mat_bsc_arbeit/asterisk_pbx_sc_pap.pdf | Bin 0 -> 5863496 bytes .../mat_bsc_arbeit/bescheinigung_eisenhauer.pdf | Bin 0 -> 512435 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/bib_umfrage.pdf | Bin 0 -> 106210 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/carp_linux.pdf | Bin 0 -> 73945 bytes .../mat_bsc_arbeit/cisco_high_availability.pdf | Bin 0 -> 102038 bytes .../mat_bsc_arbeit/cluster_technologies.pdf | Bin 0 -> 202380 bytes .../mat_bsc_arbeit/clustering_failover.pdf | Bin 0 -> 215775 bytes .../BSc-Arbeit/mat_bsc_arbeit/external_locking.pdf | Bin 0 -> 159935 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/hachap2.pdf | Bin 0 -> 281710 bytes .../BSc-Arbeit/mat_bsc_arbeit/heartbeat_sc_pap.pdf | Bin 0 -> 87380 bytes .../BSc-Arbeit/mat_bsc_arbeit/iax_sip_comp.pdf | Bin 0 -> 382025 bytes ...\303\203\302\274gbarkeitssysteme mit Linux.pdf" | Bin 0 -> 95097 bytes ... Hochvef\303\274gbarkeitssysteme mit Linux.pdf" | Bin 0 -> 95097 bytes .../linuxsutra_ Howto MySQL DRBD HA.pdf | Bin 0 -> 82953 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/literatur.txt | 2 + Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0601.pdf | Bin 0 -> 2696620 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0702.pdf | Bin 0 -> 2452555 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/p78-fox.pdf | Bin 0 -> 2424885 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/redhat_gfs.pdf | Bin 0 -> 209763 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner00.ps.gz | Bin 0 -> 235901 bytes Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner01.ps | 30395 +++++++++++++++ 73 files changed, 96486 insertions(+) create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/FSV-4PFS-Datasheet.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/HA_Whitepaper.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/ISDNguard_en.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/Trixbox_FB2_Heartbeat_Tutorial.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/berofos.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/fb2_data_sheet.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/foneBRIDGE2%20Quick%20Install%20Guide%20v.1.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/isdn_guard_installation_guide.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/pls_a.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 1.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 2.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 3.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 4.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 5.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 6.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 7.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 8.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Juel_4154_Riedel.pdf create mode 100644 "Bachelor/BSc-Arbeit/mat_bsc_arbeit/Linux-HA-Cluster mit Heartbeat und DRBD \302\253 Linux-Magazin Online.pdf" create mode 100644 "Bachelor/BSc-Arbeit/mat_bsc_arbeit/Linux-HA-Cluster mit Heartbeat und DRBD \303\202\302\253 Linux-Magazin Online.pdf" create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Mark's IT Blog_ MySQL 5 High Availability with DRBD 8 and Hea...pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/MultiportRepeater_Brochure.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/MySQL AB __ MySQL 5.1 Reference Manual __ 14 High Availabilit...pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/NGNSwitch_Dallas_10262006.pdf David Zimmer.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/AMA-2007.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/BAD-2001.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/CLU-2007.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/DAV-2006.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ELL-2007.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/FAQ-2007.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/GAB-2004.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/LIN-2005.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/MIL-1997.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/REI-2000.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/RIC-2006.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2000.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2007.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SAT-2004.txt create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SEI-2007.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SPE-2004.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SUN-1999.ps create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/USG-2007.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ZAB-2004.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ZHA-1999.ps create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/Scaling Internet Services by LinuxDirector.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/VRRP_WhitePaper.pdf create mode 100644 "Bachelor/BSc-Arbeit/mat_bsc_arbeit/Vergleich der Clustersysteme von MySQL und EAC \302\253 03 \302\253 2005 \302\253 ...pdf" create mode 100644 "Bachelor/BSc-Arbeit/mat_bsc_arbeit/Vergleich der Clustersysteme von MySQL und EAC \303\202\302\253 03 \303\202\302\253 2005 \303\202\302\253 ...pdf" create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/_BioCluster_Protocol_Description_.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/_BioCluster_User_Guide_.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/_LinuxPlanet_-_Print_-_Getting_Free_Long_Distance__Part_2_.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/_TheGoldFish_net_Blog__273_Blog_Archive__273_DUNDi_Tutorial_for_Asterisk_Home_.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/asterisk_pbx_sc_pap.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/bescheinigung_eisenhauer.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/bib_umfrage.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/carp_linux.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/cisco_high_availability.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/cluster_technologies.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/clustering_failover.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/external_locking.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/hachap2.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/heartbeat_sc_pap.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/iax_sip_comp.pdf create mode 100644 "Bachelor/BSc-Arbeit/mat_bsc_arbeit/lf179, SystemAdministration_ Hochvef\303\203\302\274gbarkeitssysteme mit Linux.pdf" create mode 100644 "Bachelor/BSc-Arbeit/mat_bsc_arbeit/lf179, SystemAdministration_ Hochvef\303\274gbarkeitssysteme mit Linux.pdf" create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/linuxsutra_ Howto MySQL DRBD HA.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/literatur.txt create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0601.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0702.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/p78-fox.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/redhat_gfs.pdf create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner00.ps.gz create mode 100644 Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner01.ps (limited to 'Bachelor/BSc-Arbeit/mat_bsc_arbeit') diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/FSV-4PFS-Datasheet.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/FSV-4PFS-Datasheet.pdf new file mode 100644 index 0000000..371aab7 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/FSV-4PFS-Datasheet.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/HA_Whitepaper.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/HA_Whitepaper.pdf new file mode 100644 index 0000000..a69d5b5 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/HA_Whitepaper.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/ISDNguard_en.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/ISDNguard_en.pdf new file mode 100644 index 0000000..d94aa9b Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/ISDNguard_en.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/Trixbox_FB2_Heartbeat_Tutorial.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/Trixbox_FB2_Heartbeat_Tutorial.pdf new file mode 100644 index 0000000..375c255 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/Trixbox_FB2_Heartbeat_Tutorial.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/berofos.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/berofos.pdf new file mode 100644 index 0000000..76f25e8 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/berofos.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/fb2_data_sheet.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/fb2_data_sheet.pdf new file mode 100644 index 0000000..7e1bd68 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/fb2_data_sheet.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/foneBRIDGE2%20Quick%20Install%20Guide%20v.1.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/foneBRIDGE2%20Quick%20Install%20Guide%20v.1.pdf new file mode 100644 index 0000000..bd6ad5a Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/foneBRIDGE2%20Quick%20Install%20Guide%20v.1.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/isdn_guard_installation_guide.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/isdn_guard_installation_guide.pdf new file mode 100644 index 0000000..5182f6e Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/isdn_guard_installation_guide.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/pls_a.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/pls_a.pdf new file mode 100644 index 0000000..7162cd7 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Fail Over Switches/pls_a.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 1.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 1.pdf new file mode 100644 index 0000000..8fd3f0e Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 1.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 2.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 2.pdf new file mode 100644 index 0000000..b98a3bf Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 2.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 3.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 3.pdf new file mode 100644 index 0000000..59e9d9b Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 3.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 4.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 4.pdf new file mode 100644 index 0000000..0943e0c Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 4.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 5.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 5.pdf new file mode 100644 index 0000000..2476b4d Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 5.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 6.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 6.pdf new file mode 100644 index 0000000..b23b899 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 6.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 7.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 7.pdf new file mode 100644 index 0000000..d5a60e6 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 7.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 8.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 8.pdf new file mode 100644 index 0000000..18d29ee Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/How To Set Up A Load-Balanced MySQL Cluster 8.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Juel_4154_Riedel.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Juel_4154_Riedel.pdf new file mode 100644 index 0000000..02e8fbe Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Juel_4154_Riedel.pdf differ diff --git "a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Linux-HA-Cluster mit Heartbeat und DRBD \302\253 Linux-Magazin Online.pdf" "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Linux-HA-Cluster mit Heartbeat und DRBD \302\253 Linux-Magazin Online.pdf" new file mode 100644 index 0000000..fbdbb47 Binary files /dev/null and "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Linux-HA-Cluster mit Heartbeat und DRBD \302\253 Linux-Magazin Online.pdf" differ diff --git "a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Linux-HA-Cluster mit Heartbeat und DRBD \303\202\302\253 Linux-Magazin Online.pdf" "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Linux-HA-Cluster mit Heartbeat und DRBD \303\202\302\253 Linux-Magazin Online.pdf" new file mode 100644 index 0000000..fbdbb47 Binary files /dev/null and "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Linux-HA-Cluster mit Heartbeat und DRBD \303\202\302\253 Linux-Magazin Online.pdf" differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Mark's IT Blog_ MySQL 5 High Availability with DRBD 8 and Hea...pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Mark's IT Blog_ MySQL 5 High Availability with DRBD 8 and Hea...pdf new file mode 100644 index 0000000..a06ce23 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Mark's IT Blog_ MySQL 5 High Availability with DRBD 8 and Hea...pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/MultiportRepeater_Brochure.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/MultiportRepeater_Brochure.pdf new file mode 100644 index 0000000..4a49781 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/MultiportRepeater_Brochure.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/MySQL AB __ MySQL 5.1 Reference Manual __ 14 High Availabilit...pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/MySQL AB __ MySQL 5.1 Reference Manual __ 14 High Availabilit...pdf new file mode 100644 index 0000000..ef691c9 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/MySQL AB __ MySQL 5.1 Reference Manual __ 14 High Availabilit...pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/NGNSwitch_Dallas_10262006.pdf David Zimmer.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/NGNSwitch_Dallas_10262006.pdf David Zimmer.pdf new file mode 100644 index 0000000..b80a002 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/NGNSwitch_Dallas_10262006.pdf David Zimmer.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/AMA-2007.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/AMA-2007.pdf new file mode 100644 index 0000000..3471071 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/AMA-2007.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/BAD-2001.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/BAD-2001.pdf new file mode 100644 index 0000000..f8de9f7 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/BAD-2001.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/CLU-2007.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/CLU-2007.pdf new file mode 100644 index 0000000..807c9b0 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/CLU-2007.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/DAV-2006.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/DAV-2006.pdf new file mode 100644 index 0000000..31d2dc8 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/DAV-2006.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ELL-2007.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ELL-2007.pdf new file mode 100644 index 0000000..c1066bd Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ELL-2007.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/FAQ-2007.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/FAQ-2007.pdf new file mode 100644 index 0000000..4d03ed5 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/FAQ-2007.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/GAB-2004.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/GAB-2004.pdf new file mode 100644 index 0000000..3a727ea Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/GAB-2004.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/LIN-2005.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/LIN-2005.pdf new file mode 100644 index 0000000..f43e03d Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/LIN-2005.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/MIL-1997.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/MIL-1997.pdf new file mode 100644 index 0000000..d7aa0dc Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/MIL-1997.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/REI-2000.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/REI-2000.pdf new file mode 100644 index 0000000..e49ed2b Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/REI-2000.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/RIC-2006.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/RIC-2006.pdf new file mode 100644 index 0000000..b71f44cf Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/RIC-2006.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2000.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2000.pdf new file mode 100644 index 0000000..59b677c Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2000.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2007.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2007.pdf new file mode 100644 index 0000000..43b1a14 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ROB-2007.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SAT-2004.txt b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SAT-2004.txt new file mode 100644 index 0000000..2041f93 --- /dev/null +++ b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SAT-2004.txt @@ -0,0 +1,14395 @@ + + + + + + +Network Working Group J. Satran +Request for Comments: 3720 K. Meth +Category: Standards Track IBM + C. Sapuntzakis + Cisco Systems + M. Chadalapaka + Hewlett-Packard Co. + E. Zeidner + IBM + April 2004 + + + Internet Small Computer Systems Interface (iSCSI) + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2003). All Rights Reserved. + +Abstract + + This document describes a transport protocol for Internet Small + Computer Systems Interface (iSCSI) that works on top of TCP. The + iSCSI protocol aims to be fully compliant with the standardized SCSI + architecture model. + + SCSI is a popular family of protocols that enable systems to + communicate with I/O devices, especially storage devices. SCSI + protocols are request/response application protocols with a common + standardized architecture model and basic command set, as well as + standardized command sets for different device classes (disks, tapes, + media-changers etc.). + + As system interconnects move from the classical bus structure to a + network structure, SCSI has to be mapped to network transport + protocols. IP networks now meet the performance requirements of fast + system interconnects and as such are good candidates to "carry" SCSI. + + + + + + + +Satran, et al. Standards Track [Page 1] + +RFC 3720 iSCSI April 2004 + + +Table of Contents + + 1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 9 + 2. Definitions and Acronyms. . . . . . . . . . . . . . . . . . . 10 + 2.1. Definitions. . . . . . . . . . . . . . . . . . . . . . 10 + 2.2. Acronyms . . . . . . . . . . . . . . . . . . . . . . . 14 + 2.3. Conventions. . . . . . . . . . . . . . . . . . . . . . 16 + 2.3.1. Word Rule. . . . . . . . . . . . . . . . . . 16 + 2.3.2. Half-Word Rule . . . . . . . . . . . . . . . 17 + 2.3.3. Byte Rule. . . . . . . . . . . . . . . . . . 17 + 3. Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . 17 + 3.1. SCSI Concepts. . . . . . . . . . . . . . . . . . . . . 17 + 3.2. iSCSI Concepts and Functional Overview . . . . . . . . 18 + 3.2.1. Layers and Sessions. . . . . . . . . . . . . 19 + 3.2.2. Ordering and iSCSI Numbering . . . . . . . . 19 + 3.2.2.1. Command Numbering and + Acknowledging . . . . . . . . . . 20 + 3.2.2.2. Response/Status Numbering and + Acknowledging . . . . . . . . . . 23 + 3.2.2.3. Data Sequencing . . . . . . . . 24 + 3.2.3. iSCSI Login. . . . . . . . . . . . . . . . . 24 + 3.2.4. iSCSI Full Feature Phase . . . . . . . . . . 25 + 3.2.4.1. Command Connection Allegiance . . 26 + 3.2.4.2. Data Transfer Overview. . . . . . 27 + 3.2.4.3. Tags and Integrity Checks . . . . 28 + 3.2.4.4. Task Management . . . . . . . . . 28 + 3.2.5. iSCSI Connection Termination . . . . . . . . 29 + 3.2.6. iSCSI Names. . . . . . . . . . . . . . . . . 29 + 3.2.6.1. iSCSI Name Properties . . . . . . 30 + 3.2.6.2. iSCSI Name Encoding . . . . . . . 31 + 3.2.6.3. iSCSI Name Structure. . . . . . . 32 + 3.2.6.3.1. Type "iqn." (iSCSI + Qualified Name) . . . 32 + 3.2.6.3.2. Type "eui." (IEEE + EUI-64 format). . . . 34 + 3.2.7. Persistent State . . . . . . . . . . . . . . 34 + 3.2.8. Message Synchronization and Steering . . . . 35 + 3.2.8.1. Sync/Steering and iSCSI PDU + Length . . . . . . . . . . . . . 36 + 3.3. iSCSI Session Types. . . . . . . . . . . . . . . . . . 36 + 3.4. SCSI to iSCSI Concepts Mapping Model . . . . . . . . . 37 + 3.4.1. iSCSI Architecture Model . . . . . . . . . . 37 + 3.4.2. SCSI Architecture Model. . . . . . . . . . . 39 + 3.4.3. Consequences of the Model. . . . . . . . . . 41 + 3.4.3.1. I_T Nexus State . . . . . . . . . 42 + 3.5. Request/Response Summary . . . . . . . . . . . . . . . 42 + 3.5.1. Request/Response Types Carrying SCSI Payload 43 + 3.5.1.1. SCSI-Command . . . . . . . . . . 43 + + + +Satran, et al. Standards Track [Page 2] + +RFC 3720 iSCSI April 2004 + + + 3.5.1.2. SCSI-Response . . . . . . . . . 43 + 3.5.1.3. Task Management Function Request. 44 + 3.5.1.4. Task Management Function Response 44 + 3.5.1.5. SCSI Data-Out and SCSI Data-In. . 44 + 3.5.1.6. Ready To Transfer (R2T) . . . . . 45 + 3.5.2. Requests/Responses carrying SCSI and iSCSI + Payload. . . . . . . . . . . . . . . . . . . 46 + 3.5.2.1. Asynchronous Message. . . . . . . 46 + 3.5.3. Requests/Responses Carrying iSCSI Only + Payload. . . . . . . . . . . . . . . . . . . 46 + 3.5.3.1. Text Request and Text Response. . 46 + 3.5.3.2. Login Request and Login Response. 47 + 3.5.3.3. Logout Request and Response . . . 47 + 3.5.3.4. SNACK Request . . . . . . . . . . 48 + 3.5.3.5. Reject. . . . . . . . . . . . . . 48 + 3.5.3.6. NOP-Out Request and NOP-In + Response . . . . . . . . . . . . 48 + 4. SCSI Mode Parameters for iSCSI. . . . . . . . . . . . . . . . 48 + 5. Login and Full Feature Phase Negotiation. . . . . . . . . . . 48 + 5.1. Text Format. . . . . . . . . . . . . . . . . . . . . . 50 + 5.2. Text Mode Negotiation. . . . . . . . . . . . . . . . . 53 + 5.2.1. List negotiations. . . . . . . . . . . . . . 56 + 5.2.2. Simple-value Negotiations. . . . . . . . . . 56 + 5.3. Login Phase. . . . . . . . . . . . . . . . . . . . . . 57 + 5.3.1. Login Phase Start. . . . . . . . . . . . . . 60 + 5.3.2. iSCSI Security Negotiation . . . . . . . . . 62 + 5.3.3. Operational Parameter Negotiation During + the Login Phase. . . . . . . . . . . . . . . 63 + 5.3.4. Connection Reinstatement . . . . . . . . . . 64 + 5.3.5. Session Reinstatement, Closure, and Timeout. 64 + 5 5.3.5.1. Loss of Nexus + Notification. . . . . 65 + 5.3.6. Session Continuation and Failure . . . . . . 65 + 5.4. Operational Parameter Negotiation Outside the Login + Phase. . . . . . . . . . . . . . . . . . . . . . . . . 66 + 6. iSCSI Error Handling and Recovery . . . . . . . . . . . . . . 67 + 6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 67 + 6.1.1. Background . . . . . . . . . . . . . . . . . 67 + 6.1.2. Goals. . . . . . . . . . . . . . . . . . . . 67 + 6.1.3. Protocol Features and State Expectations . . 68 + 6.1.4. Recovery Classes . . . . . . . . . . . . . . 69 + 6.1.4.1. Recovery Within-command . . . . . 69 + 6.1.4.2. Recovery Within-connection. . . . 70 + 6.1.4.3. Connection Recovery . . . . . . . 71 + 6.1.4.4. Session Recovery. . . . . . . . . 72 + 6.1.5. Error Recovery Hierarchy . . . . . . . . . . . 72 + 6.2. Retry and Reassign in Recovery . . . . . . . . . . . . 74 + 6.2.1. Usage of Retry . . . . . . . . . . . . . . . 74 + + + +Satran, et al. Standards Track [Page 3] + +RFC 3720 iSCSI April 2004 + + + 6.2.2. Allegiance Reassignment. . . . . . . . . . . 75 + 6.3. Usage Of Reject PDU in Recovery. . . . . . . . . . . . 76 + 6.4. Connection Timeout Management. . . . . . . . . . . . . 76 + 6.4.1. Timeouts on Transport Exception Events . . . 77 + 6.4.2. Timeouts on Planned Decommissioning. . . . . 77 + 6.5. Implicit Termination of Tasks. . . . . . . . . . . . . 77 + 6.6. Format Errors. . . . . . . . . . . . . . . . . . . . . 78 + 6.7. Digest Errors. . . . . . . . . . . . . . . . . . . . . 78 + 6.8. Sequence Errors. . . . . . . . . . . . . . . . . . . . 80 + 6.9. SCSI Timeouts. . . . . . . . . . . . . . . . . . . . . 81 + 6.10. Negotiation Failures . . . . . . . . . . . . . . . . . 81 + 6.11. Protocol Errors. . . . . . . . . . . . . . . . . . . . 82 + 6.12. Connection Failures. . . . . . . . . . . . . . . . . . 82 + 6.13. Session Errors . . . . . . . . . . . . . . . . . . . . 83 + 7. State Transitions . . . . . . . . . . . . . . . . . . . . . . 84 + 7.1. Standard Connection State Diagrams . . . . . . . . . . 84 + 7.1.1. State Descriptions for Initiators and + Targets. . . . . . . . . . . . . . . . . . . 84 + 7.1.2. State Transition Descriptions for Initiators + and Targets. . . . . . . . . . . . . . . . . 85 + 7.1.3. Standard Connection State Diagram for an + Initiator. . . . . . . . . . . . . . . . . . 88 + 7.1.4. Standard Connection State Diagram for a + Target . . . . . . . . . . . . . . . . . . . 90 + 7.2. Connection Cleanup State Diagram for Initiators and + Targets. . . . . . . . . . . . . . . . . . . . . . . . 92 + 7.2.1. State Descriptions for Initiators and + Targets. . . . . . . . . . . . . . . . . . . 94 + 7.2.2. State Transition Descriptions for Initiators + and Targets. . . . . . . . . . . . . . . . . 94 + 7.3. Session State Diagrams . . . . . . . . . . . . . . . . 95 + 7.3.1. Session State Diagram for an Initiator . . . 95 + 7.3.2. Session State Diagram for a Target . . . . . 96 + 7.3.3. State Descriptions for Initiators and + Targets. . . . . . . . . . . . . . . . . . . 97 + 7.3.4. State Transition Descriptions for Initiators + and Targets. . . . . . . . . . . . . . . . . 98 + 8. Security Considerations . . . . . . . . . . . . . . . . . . . 99 + 8.1. iSCSI Security Mechanisms. . . . . . . . . . . . . . . 100 + 8.2. In-band Initiator-Target Authentication. . . . . . . . 100 + 8.2.1. CHAP Considerations. . . . . . . . . . . . . 101 + 8.2.2. SRP Considerations . . . . . . . . . . . . . 103 + 8.3. IPsec. . . . . . . . . . . . . . . . . . . . . . . . . 104 + 8.3.1. Data Integrity and Authentication. . . . . . 104 + 8.3.2. Confidentiality. . . . . . . . . . . . . . . 105 + 8.3.3. Policy, Security Associations, and + Cryptographic Key Management . . . . . . . . 105 + 9. Notes to Implementers . . . . . . . . . . . . . . . . . . . . 106 + + + +Satran, et al. Standards Track [Page 4] + +RFC 3720 iSCSI April 2004 + + + 9.1. Multiple Network Adapters. . . . . . . . . . . . . . . 106 + 9.1.1. Conservative Reuse of ISIDs. . . . . . . . . 107 + 9.1.2. iSCSI Name, ISID, and TPGT Use . . . . . . . 107 + 9.2. Autosense and Auto Contingent Allegiance (ACA) . . . . 109 + 9.3. iSCSI Timeouts . . . . . . . . . . . . . . . . . . . . 109 + 9.4. Command Retry and Cleaning Old Command Instances . . . 110 + 9.5. Synch and Steering Layer and Performance . . . . . . . 110 + 9.6. Considerations for State-dependent Devices and + Long-lasting SCSI Operations . . . . . . . . . . . . . 111 + 9.6.1. Determining the Proper ErrorRecoveryLevel. . 112 + 10. iSCSI PDU Formats . . . . . . . . . . . . . . . . . . . . . . 112 + 10.1. iSCSI PDU Length and Padding . . . . . . . . . . . . . 113 + 10.2. PDU Template, Header, and Opcodes. . . . . . . . . . . 113 + 10.2.1. Basic Header Segment (BHS) . . . . . . . . . 114 + 10.2.1.1. I . . . . . . . . . . . . . . . . 115 + 10.2.1.2. Opcode. . . . . . . . . . . . . . 115 + 10.2.1.3. Final (F) bit . . . . . . . . . . 116 + 10.2.1.4. Opcode-specific Fields. . . . . . 116 + 10.2.1.5. TotalAHSLength. . . . . . . . . . 116 + 10.2.1.6. DataSegmentLength . . . . . . . . 116 + 10.2.1.7. LUN . . . . . . . . . . . . . . . 116 + 10.2.1.8. Initiator Task Tag. . . . . . . . 117 + 10.2.2. Additional Header Segment (AHS) . . . . . . . 117 + 10.2.2.1. AHSType . . . . . . . . . . . . . 117 + 10.2.2.2. AHSLength . . . . . . . . . . . . 117 + 10.2.2.3. Extended CDB AHS. . . . . . . . . 118 + 10.2.2.4. Bidirectional Expected Read-Data + Length AHS. . . . . . . . . . . . 118 + 10.2.3. Header Digest and Data Digest. . . . . . . . 118 + 10.2.4. Data Segment . . . . . . . . . . . . . . . . 119 + 10.3. SCSI Command . . . . . . . . . . . . . . . . . . . . . 119 + 10.3.1. Flags and Task Attributes (byte 1) . . . . . 120 + 10.3.2. CmdSN - Command Sequence Number. . . . . . . 120 + 10.3.3. ExpStatSN. . . . . . . . . . . . . . . . . . 120 + 10.3.4. Expected Data Transfer Length. . . . . . . . 121 + 10.3.5. CDB - SCSI Command Descriptor Block. . . . . 121 + 10.3.6. Data Segment - Command Data. . . . . . . . . 121 + 10.4. SCSI Response. . . . . . . . . . . . . . . . . . . . . 122 + 10.4.1. Flags (byte 1) . . . . . . . . . . . . . . . 123 + 10.4.2. Status . . . . . . . . . . . . . . . . . . . 123 + 10.4.3. Response . . . . . . . . . . . . . . . . . . 124 + 10.4.4. SNACK Tag. . . . . . . . . . . . . . . . . . 125 + 10.4.5. Residual Count . . . . . . . . . . . . . . . 125 + 10.4.6. Bidirectional Read Residual Count. . . . . . 125 + 10.4.7. Data Segment - Sense and Response Data + Segment. . . . . . . . . . . . . . . . . . . 125 + 10.4.7.1. SenseLength . . . . . . . . . . . 126 + 10.4.7.2. Sense Data. . . . . . . . . . . . 126 + + + +Satran, et al. Standards Track [Page 5] + +RFC 3720 iSCSI April 2004 + + + 10.4.8. ExpDataSN. . . . . . . . . . . . . . . . . . 127 + 10.4.9. StatSN - Status Sequence Number. . . . . . . 127 + 10.4.10. ExpCmdSN - Next Expected CmdSN from this + Initiator. . . . . . . . . . . . . . . . . . 128 + 10.4.11. MaxCmdSN - Maximum CmdSN from this Initiator 128 + 10.5. Task Management Function Request . . . . . . . . . . . 129 + 10.5.1. Function . . . . . . . . . . . . . . . . . . 129 + 10.5.2. TotalAHSLength and DataSegmentLength . . . . 132 + 10.5.3. LUN. . . . . . . . . . . . . . . . . . . . . 132 + 10.5.4. Referenced Task Tag. . . . . . . . . . . . . 132 + 10.5.5. RefCmdSN . . . . . . . . . . . . . . . . . . 132 + 10.5.6. ExpDataSN. . . . . . . . . . . . . . . . . . 133 + 10.6. Task Management Function Response. . . . . . . . . . . 134 + 10.6.1. Response . . . . . . . . . . . . . . . . . . 134 + 10.6.2. Task Management Actions on Task Sets . . . . 136 + 10.6.3. TotalAHSLength and DataSegmentLength . . . . 137 + 10.7. SCSI Data-Out & SCSI Data-In . . . . . . . . . . . . . 137 + 10.7.1. F (Final) Bit. . . . . . . . . . . . . . . . 139 + 10.7.2. A (Acknowledge) Bit. . . . . . . . . . . . . 139 + 10.7.3. Flags (byte 1) . . . . . . . . . . . . . . . 140 + 10.7.4. Target Transfer Tag and LUN. . . . . . . . . 140 + 10.7.5. DataSN . . . . . . . . . . . . . . . . . . . 141 + 10.7.6. Buffer Offset. . . . . . . . . . . . . . . . 141 + 10.7.7. DataSegmentLength. . . . . . . . . . . . . . 141 + 10.8. Ready To Transfer (R2T). . . . . . . . . . . . . . . . 142 + 10.8.1. TotalAHSLength and DataSegmentLength . . . . 143 + 10.8.2. R2TSN. . . . . . . . . . . . . . . . . . . . 143 + 10.8.3. StatSN . . . . . . . . . . . . . . . . . . . 144 + 10.8.4. Desired Data Transfer Length and Buffer + Offset . . . . . . . . . . . . . . . . . . . 144 + 10.8.5. Target Transfer Tag. . . . . . . . . . . . . 144 + 10.9. Asynchronous Message . . . . . . . . . . . . . . . . . 145 + 10.9.1. AsyncEvent . . . . . . . . . . . . . . . . . 146 + 10.9.2. AsyncVCode . . . . . . . . . . . . . . . . . 147 + 10.9.3. LUN. . . . . . . . . . . . . . . . . . . . . 147 + 10.9.4. Sense Data and iSCSI Event Data. . . . . . . 148 + 10.9.4.1. SenseLength . . . . . . . . . . . 148 + 10.10. Text Request . . . . . . . . . . . . . . . . . . . . . 149 + 10.10.1. F (Final) Bit. . . . . . . . . . . . . . . . 150 + 10.10.2. C (Continue) Bit . . . . . . . . . . . . . . 150 + 10.10.3. Initiator Task Tag . . . . . . . . . . . . . 150 + 10.10.4. Target Transfer Tag. . . . . . . . . . . . . 150 + 10.10.5. Text . . . . . . . . . . . . . . . . . . . . 151 + 10.11. Text Response. . . . . . . . . . . . . . . . . . . . . 152 + 10.11.1. F (Final) Bit. . . . . . . . . . . . . . . . 152 + 10.11.2. C (Continue) Bit . . . . . . . . . . . . . . 153 + 10.11.3. Initiator Task Tag . . . . . . . . . . . . . 153 + 10.11.4. Target Transfer Tag. . . . . . . . . . . . . 153 + + + +Satran, et al. Standards Track [Page 6] + +RFC 3720 iSCSI April 2004 + + + 10.11.5. StatSN . . . . . . . . . . . . . . . . . . . 154 + 10.11.6. Text Response Data . . . . . . . . . . . . . 154 + 10.12. Login Request. . . . . . . . . . . . . . . . . . . . . 154 + 10.12.1. T (Transit) Bit. . . . . . . . . . . . . . . 155 + 10.12.2. C (Continue) Bit . . . . . . . . . . . . . . 155 + 10.12.3. CSG and NSG. . . . . . . . . . . . . . . . . 156 + 10.12.4. Version. . . . . . . . . . . . . . . . . . . 156 + 10.12.4.1. Version-max. . . . . . . . . . . 156 + 10.12.4.2. Version-min. . . . . . . . . . . 156 + 10.12.5. ISID . . . . . . . . . . . . . . . . . . . . 157 + 10.12.6. TSIH . . . . . . . . . . . . . . . . . . . . 158 + 10.12.7. Connection ID - CID. . . . . . . . . . . . . 158 + 10.12.8. CmdSN. . . . . . . . . . . . . . . . . . . . 159 + 10.12.9. ExpStatSN. . . . . . . . . . . . . . . . . . 159 + 10.12.10. Login Parameters . . . . . . . . . . . . . . 159 + 10.13. Login Response . . . . . . . . . . . . . . . . . . . . 160 + 10.13.1. Version-max. . . . . . . . . . . . . . . . . 160 + 10.13.2. Version-active . . . . . . . . . . . . . . . 161 + 10.13.3. TSIH . . . . . . . . . . . . . . . . . . . . 161 + 10.13.4. StatSN . . . . . . . . . . . . . . . . . . . 161 + 10.13.5. Status-Class and Status-Detail . . . . . . . 161 + 10.13.6. T (Transit) Bit. . . . . . . . . . . . . . . 164 + 10.13.7. C (Continue) Bit . . . . . . . . . . . . . . 164 + 10.13.8. Login Parameters . . . . . . . . . . . . . . 164 + 10.14. Logout Request . . . . . . . . . . . . . . . . . . . . 165 + 10.14.1. Reason Code. . . . . . . . . . . . . . . . . 167 + 10.14.2. TotalAHSLength and DataSegmentLength . . . . 168 + 10.14.3. CID. . . . . . . . . . . . . . . . . . . . . 168 + 10.14.4. ExpStatSN. . . . . . . . . . . . . . . . . . 168 + 10.14.5. Implicit termination of tasks. . . . . . . . 168 + 10.15. Logout Response. . . . . . . . . . . . . . . . . . . . 169 + 10.15.1. Response . . . . . . . . . . . . . . . . . . 170 + 10.15.2. TotalAHSLength and DataSegmentLength . . . . 170 + 10.15.3. Time2Wait. . . . . . . . . . . . . . . . . . 170 + 10.15.4. Time2Retain. . . . . . . . . . . . . . . . . 170 + 10.16. SNACK Request. . . . . . . . . . . . . . . . . . . . . 171 + 10.16.1. Type . . . . . . . . . . . . . . . . . . . . 172 + 10.16.2. Data Acknowledgement . . . . . . . . . . . . 173 + 10.16.3. Resegmentation . . . . . . . . . . . . . . . 173 + 10.16.4. Initiator Task Tag . . . . . . . . . . . . . 174 + 10.16.5. Target Transfer Tag or SNACK Tag . . . . . . 174 + 10.16.6. BegRun . . . . . . . . . . . . . . . . . . . 174 + 10.16.7. RunLength. . . . . . . . . . . . . . . . . . 174 + 10.17. Reject . . . . . . . . . . . . . . . . . . . . . . . . 175 + 10.17.1. Reason . . . . . . . . . . . . . . . . . . . 176 + 10.17.2. DataSN/R2TSN . . . . . . . . . . . . . . . . 177 + 10.17.3. StatSN, ExpCmdSN and MaxCmdSN. . . . . . . . 177 + 10.17.4. Complete Header of Bad PDU . . . . . . . . . 177 + + + +Satran, et al. Standards Track [Page 7] + +RFC 3720 iSCSI April 2004 + + + 10.18. NOP-Out. . . . . . . . . . . . . . . . . . . . . . . . 178 + 10.18.1. Initiator Task Tag . . . . . . . . . . . . . 179 + 10.18.2. Target Transfer Tag. . . . . . . . . . . . . 179 + 10.18.3. Ping Data. . . . . . . . . . . . . . . . . . 179 + 10.19. NOP-In . . . . . . . . . . . . . . . . . . . . . . . . 180 + 10.19.1. Target Transfer Tag. . . . . . . . . . . . . 181 + 10.19.2. StatSN . . . . . . . . . . . . . . . . . . . 181 + 10.19.3. LUN. . . . . . . . . . . . . . . . . . . . . 181 + 11. iSCSI Security Text Keys and Authentication Methods . . . . . 181 + 11.1. AuthMethod . . . . . . . . . . . . . . . . . . . . . . 182 + 11.1.1. Kerberos . . . . . . . . . . . . . . . . . . 184 + 11.1.2. Simple Public-Key Mechanism (SPKM) . . . . . 184 + 11.1.3. Secure Remote Password (SRP) . . . . . . . . 185 + 11.1.4. Challenge Handshake Authentication Protocol + (CHAP) . . . . . . . . . . . . . . . . . . . 186 + 12. Login/Text Operational Text Keys. . . . . . . . . . . . . . . 187 + 12.1. HeaderDigest and DataDigest. . . . . . . . . . . . . . 188 + 12.2. MaxConnections . . . . . . . . . . . . . . . . . . . . 190 + 12.3. SendTargets. . . . . . . . . . . . . . . . . . . . . . 191 + 12.4. TargetName . . . . . . . . . . . . . . . . . . . . . . 191 + 12.5. InitiatorName. . . . . . . . . . . . . . . . . . . . . 192 + 12.6. TargetAlias. . . . . . . . . . . . . . . . . . . . . . 192 + 12.7. InitiatorAlias . . . . . . . . . . . . . . . . . . . . 193 + 12.8. TargetAddress. . . . . . . . . . . . . . . . . . . . . 193 + 12.9. TargetPortalGroupTag . . . . . . . . . . . . . . . . . 194 + 12.10. InitialR2T . . . . . . . . . . . . . . . . . . . . . . 194 + 12.11. ImmediateData. . . . . . . . . . . . . . . . . . . . . 195 + 12.12. MaxRecvDataSegmentLength . . . . . . . . . . . . . . . 196 + 12.13. MaxBurstLength . . . . . . . . . . . . . . . . . . . . 196 + 12.14. FirstBurstLength . . . . . . . . . . . . . . . . . . . 197 + 12.15. DefaultTime2Wait . . . . . . . . . . . . . . . . . . . 197 + 12.16. DefaultTime2Retain . . . . . . . . . . . . . . . . . . 198 + 12.17. MaxOutstandingR2T. . . . . . . . . . . . . . . . . . . 198 + 12.18. DataPDUInOrder . . . . . . . . . . . . . . . . . . . . 198 + 12.19. DataSequenceInOrder. . . . . . . . . . . . . . . . . . 199 + 12.20. ErrorRecoveryLevel . . . . . . . . . . . . . . . . . . 199 + 12.21. SessionType. . . . . . . . . . . . . . . . . . . . . . 200 + 12.22. The Private or Public Extension Key Format . . . . . . 200 + 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 201 + 13.1. Naming Requirements. . . . . . . . . . . . . . . . . . 203 + 13.2. Mechanism Specification Requirements . . . . . . . . . 203 + 13.3. Publication Requirements . . . . . . . . . . . . . . . 203 + 13.4. Security Requirements. . . . . . . . . . . . . . . . . 203 + 13.5. Registration Procedure . . . . . . . . . . . . . . . . 204 + 13.5.1. Present the iSCSI extension item to the + Community. . . . . . . . . . . . . . . . . . 204 + 13.5.2. iSCSI extension item review and IESG + approval . . . . . . . . . . . . . . . . . . 204 + + + +Satran, et al. Standards Track [Page 8] + +RFC 3720 iSCSI April 2004 + + + 13.5.3. IANA Registration. . . . . . . . . . . . . . 204 + 13.5.4. Standard iSCSI extension item-label format . 204 + 13.6. IANA Procedures for Registering iSCSI extension items. 205 + References. . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 + Appendix A. Sync and Steering with Fixed Interval Markers . . . . 209 + A.1. Markers At Fixed Intervals . . . . . . . . . . . . . . 209 + A.2. Initial Marker-less Interval . . . . . . . . . . . . . 210 + A.3. Negotiation. . . . . . . . . . . . . . . . . . . . . . 210 + A.3.1. OFMarker, IFMarker . . . . . . . . . . . . . 210 + A.3.2. OFMarkInt, IFMarkInt . . . . . . . . . . . . 211 + Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 212 + B.1. Read Operation Example . . . . . . . . . . . . . . . . 212 + B.2. Write Operation Example. . . . . . . . . . . . . . . . 213 + B.3. R2TSN/DataSN Use Examples. . . . . . . . . . . . . . . 214 + B.4. CRC Examples . . . . . . . . . . . . . . . . . . . . . 217 + Appendix C. Login Phase Examples . . . . . . . . . . . . . . . . 219 + Appendix D. SendTargets Operation. . . . . . . . . . . . . . . . 229 + Appendix E. Algorithmic Presentation of Error Recovery Classes . 233 + E.1. General Data Structure and Procedure Description . . . 233 + E.2. Within-command Error Recovery Algorithms . . . . . . . 234 + E.2.1. Procedure Descriptions . . . . . . . . . . . 234 + E.2.2. Initiator Algorithms . . . . . . . . . . . . 235 + E.2.3. Target Algorithms. . . . . . . . . . . . . . 237 + E.3. Within-connection Recovery Algorithms. . . . . . . . . 240 + E.3.1. Procedure Descriptions . . . . . . . . . . . 240 + E.3.2. Initiator Algorithms . . . . . . . . . . . . 241 + E.3.3. Target Algorithms. . . . . . . . . . . . . . 243 + E.4. Connection Recovery Algorithms . . . . . . . . . . . . 243 + E.4.1. Procedure Descriptions . . . . . . . . . . . 243 + E.4.2. Initiator Algorithms . . . . . . . . . . . . 244 + E.4.3. Target Algorithms. . . . . . . . . . . . . . 246 + Appendix F. Clearing Effects of Various Events on Targets. . . . 249 + F.1. Clearing Effects on iSCSI Objects. . . . . . . . . . . 249 + F.2. Clearing Effects on SCSI Objects . . . . . . . . . . . 253 + Acknowledgements. . . . . . . . . . . . . . . . . . . . . . . . . 254 + Authors' Addresses. . . . . . . . . . . . . . . . . . . . . . . . 256 + Full Copyright Statement. . . . . . . . . . . . . . . . . . . . . 257 + +1. Introduction + + The Small Computer Systems Interface (SCSI) is a popular family of + protocols for communicating with I/O devices, especially storage + devices. SCSI is a client-server architecture. Clients of a SCSI + interface are called "initiators". Initiators issue SCSI "commands" + to request services from components, logical units of a server known + as a "target". A "SCSI transport" maps the client-server SCSI + protocol to a specific interconnect. An Initiator is one endpoint of + a SCSI transport and a target is the other endpoint. + + + +Satran, et al. Standards Track [Page 9] + +RFC 3720 iSCSI April 2004 + + + The SCSI protocol has been mapped over various transports, including + Parallel SCSI, IPI, IEEE-1394 (firewire) and Fibre Channel. These + transports are I/O specific and have limited distance capabilities. + + The iSCSI protocol defined in this document describes a means of + transporting SCSI packets over TCP/IP (see [RFC791], [RFC793], + [RFC1035], [RFC1122]), providing for an interoperable solution which + can take advantage of existing Internet infrastructure, Internet + management facilities, and address distance limitations. + +2. Definitions and Acronyms + +2.1. Definitions + + - Alias: An alias string can also be associated with an iSCSI Node. + The alias allows an organization to associate a user-friendly + string with the iSCSI Name. However, the alias string is not a + substitute for the iSCSI Name. + + - CID (Connection ID): Connections within a session are identified by + a connection ID. It is a unique ID for this connection within the + session for the initiator. It is generated by the initiator and + presented to the target during login requests and during logouts + that close connections. + + - Connection: A connection is a TCP connection. Communication + between the initiator and target occurs over one or more TCP + connections. The TCP connections carry control messages, SCSI + commands, parameters, and data within iSCSI Protocol Data Units + (iSCSI PDUs). + + - iSCSI Device: A SCSI Device using an iSCSI service delivery + subsystem. Service Delivery Subsystem is defined by [SAM2] as a + transport mechanism for SCSI commands and responses. + + - iSCSI Initiator Name: The iSCSI Initiator Name specifies the + worldwide unique name of the initiator. + + - iSCSI Initiator Node: The "initiator". The word "initiator" has + been appropriately qualified as either a port or a device in the + rest of the document when the context is ambiguous. All + unqualified usages of "initiator" refer to an initiator port (or + device) depending on the context. + + - iSCSI Layer: This layer builds/receives iSCSI PDUs and + relays/receives them to/from one or more TCP connections that form + an initiator-target "session". + + + + +Satran, et al. Standards Track [Page 10] + +RFC 3720 iSCSI April 2004 + + + - iSCSI Name: The name of an iSCSI initiator or iSCSI target. + + - iSCSI Node: The iSCSI Node represents a single iSCSI initiator or + iSCSI target. There are one or more iSCSI Nodes within a Network + Entity. The iSCSI Node is accessible via one or more Network + Portals. An iSCSI Node is identified by its iSCSI Name. The + separation of the iSCSI Name from the addresses used by and for the + iSCSI Node allows multiple iSCSI Nodes to use the same address, and + the same iSCSI Node to use multiple addresses. + + - iSCSI Target Name: The iSCSI Target Name specifies the worldwide + unique name of the target. + + - iSCSI Target Node: The "target". + + - iSCSI Task: An iSCSI task is an iSCSI request for which a response + is expected. + + - iSCSI Transfer Direction: The iSCSI transfer direction is defined + with regard to the initiator. Outbound or outgoing transfers are + transfers from the initiator to the target, while inbound or + incoming transfers are from the target to the initiator. + + - ISID: The initiator part of the Session Identifier. It is + explicitly specified by the initiator during Login. + + - I_T nexus: According to [SAM2], the I_T nexus is a relationship + between a SCSI Initiator Port and a SCSI Target Port. For iSCSI, + this relationship is a session, defined as a relationship between + an iSCSI Initiator's end of the session (SCSI Initiator Port) and + the iSCSI Target's Portal Group. The I_T nexus can be identified + by the conjunction of the SCSI port names; that is, the I_T nexus + identifier is the tuple (iSCSI Initiator Name + ',i,'+ ISID, iSCSI + Target Name + ',t,'+ Portal Group Tag). + + - Network Entity: The Network Entity represents a device or gateway + that is accessible from the IP network. A Network Entity must have + one or more Network Portals, each of which can be used to gain + access to the IP network by some iSCSI Nodes contained in that + Network Entity. + + - Network Portal: The Network Portal is a component of a Network + Entity that has a TCP/IP network address and that may be used by an + iSCSI Node within that Network Entity for the connection(s) within + one of its iSCSI sessions. A Network Portal in an initiator is + identified by its IP address. A Network Portal in a target is + identified by its IP address and its listening TCP port. + + + + +Satran, et al. Standards Track [Page 11] + +RFC 3720 iSCSI April 2004 + + + - Originator: In a negotiation or exchange, the party that initiates + the negotiation or exchange. + + - PDU (Protocol Data Unit): The initiator and target divide their + communications into messages. The term "iSCSI protocol data unit" + (iSCSI PDU) is used for these messages. + + - Portal Groups: iSCSI supports multiple connections within the same + session; some implementations will have the ability to combine + connections in a session across multiple Network Portals. A Portal + Group defines a set of Network Portals within an iSCSI Network + Entity that collectively supports the capability of coordinating a + session with connections spanning these portals. Not all Network + Portals within a Portal Group need participate in every session + connected through that Portal Group. One or more Portal Groups may + provide access to an iSCSI Node. Each Network Portal, as utilized + by a given iSCSI Node, belongs to exactly one portal group within + that node. + + - Portal Group Tag: This 16-bit quantity identifies a Portal Group + within an iSCSI Node. All Network Portals with the same portal + group tag in the context of a given iSCSI Node are in the same + Portal Group. + + - Recovery R2T: An R2T generated by a target upon detecting the loss + of one or more Data-Out PDUs through one of the following means: a + digest error, a sequence error, or a sequence reception timeout. A + recovery R2T carries the next unused R2TSN, but requests all or + part of the data burst that an earlier R2T (with a lower R2TSN) had + already requested. + + - Responder: In a negotiation or exchange, the party that responds to + the originator of the negotiation or exchange. + + - SCSI Device: This is the SAM2 term for an entity that contains one + or more SCSI ports that are connected to a service delivery + subsystem and supports a SCSI application protocol. For example, a + SCSI Initiator Device contains one or more SCSI Initiator Ports and + zero or more application clients. A Target Device contains one or + more SCSI Target Ports and one or more device servers and + associated logical units. For iSCSI, the SCSI Device is the + component within an iSCSI Node that provides the SCSI + functionality. As such, there can be at most, one SCSI Device + within a given iSCSI Node. Access to the SCSI Device can only be + achieved in an iSCSI normal operational session. The SCSI Device + Name is defined to be the iSCSI Name of the node. + + + + + +Satran, et al. Standards Track [Page 12] + +RFC 3720 iSCSI April 2004 + + + - SCSI Layer: This builds/receives SCSI CDBs (Command Descriptor + Blocks) and relays/receives them with the remaining command execute + [SAM2] parameters to/from the iSCSI Layer. + + - Session: The group of TCP connections that link an initiator with a + target form a session (loosely equivalent to a SCSI I-T nexus). + TCP connections can be added and removed from a session. Across + all connections within a session, an initiator sees one and the + same target. + + - SCSI Initiator Port: This maps to the endpoint of an iSCSI normal + operational session. An iSCSI normal operational session is + negotiated through the login process between an iSCSI initiator + node and an iSCSI target node. At successful completion of this + process, a SCSI Initiator Port is created within the SCSI Initiator + Device. The SCSI Initiator Port Name and SCSI Initiator Port + Identifier are both defined to be the iSCSI Initiator Name together + with (a) a label that identifies it as an initiator port + name/identifier and (b) the ISID portion of the session identifier. + + - SCSI Port: This is the SAM2 term for an entity in a SCSI Device + that provides the SCSI functionality to interface with a service + delivery subsystem. For iSCSI, the definition of the SCSI + Initiator Port and the SCSI Target Port are different. + + - SCSI Port Name: A name made up as UTF-8 [RFC2279] characters and + includes the iSCSI Name + 'i' or 't' + ISID or Portal Group Tag. + + + - SCSI Target Port: This maps to an iSCSI Target Portal Group. + + - SCSI Target Port Name and SCSI Target Port Identifier: These are + both defined to be the iSCSI Target Name together with (a) a label + that identifies it as a target port name/identifier and (b) the + portal group tag. + + - SSID (Session ID): A session between an iSCSI initiator and an + iSCSI target is defined by a session ID that is a tuple composed of + an initiator part (ISID) and a target part (Target Portal Group + Tag). The ISID is explicitly specified by the initiator at session + establishment. The Target Portal Group Tag is implied by the + initiator through the selection of the TCP endpoint at connection + establishment. The TargetPortalGroupTag key must also be returned + by the target as a confirmation during connection establishment + when TargetName is given. + + - Target Portal Group Tag: A numerical identifier (16-bit) for an + iSCSI Target Portal Group. + + + +Satran, et al. Standards Track [Page 13] + +RFC 3720 iSCSI April 2004 + + + - TSIH (Target Session Identifying Handle): A target assigned tag for + a session with a specific named initiator. The target generates it + during session establishment. Its internal format and content are + not defined by this protocol, except for the value 0 that is + reserved and used by the initiator to indicate a new session. It + is given to the target during additional connection establishment + for the same session. + +2.2. Acronyms + + Acronym Definition + ------------------------------------------------------------ + 3DES Triple Data Encryption Standard + ACA Auto Contingent Allegiance + AEN Asynchronous Event Notification + AES Advanced Encryption Standard + AH Additional Header (not the IPsec AH!) + AHS Additional Header Segment + API Application Programming Interface + ASC Additional Sense Code + ASCII American Standard Code for Information Interchange + ASCQ Additional Sense Code Qualifier + BHS Basic Header Segment + CBC Cipher Block Chaining + CD Compact Disk + CDB Command Descriptor Block + CHAP Challenge Handshake Authentication Protocol + CID Connection ID + CO Connection Only + CRC Cyclic Redundancy Check + CRL Certificate Revocation List + CSG Current Stage + CSM Connection State Machine + DES Data Encryption Standard + DNS Domain Name Server + DOI Domain of Interpretation + DVD Digital Versatile Disk + ESP Encapsulating Security Payload + EUI Extended Unique Identifier + FFP Full Feature Phase + FFPO Full Feature Phase Only + FIM Fixed Interval Marker + Gbps Gigabits per Second + HBA Host Bus Adapter + HMAC Hashed Message Authentication Code + I_T Initiator_Target + I_T_L Initiator_Target_LUN + IANA Internet Assigned Numbers Authority + + + +Satran, et al. Standards Track [Page 14] + +RFC 3720 iSCSI April 2004 + + + ID Identifier + IDN Internationalized Domain Name + IEEE Institute of Electrical & Electronics Engineers + IETF Internet Engineering Task Force + IKE Internet Key Exchange + I/O Input - Output + IO Initialize Only + IP Internet Protocol + IPsec Internet Protocol Security + IPv4 Internet Protocol Version 4 + IPv6 Internet Protocol Version 6 + IQN iSCSI Qualified Name + ISID Initiator Session ID + ITN iSCSI Target Name + ITT Initiator Task Tag + KRB5 Kerberos V5 + LFL Lower Functional Layer + LTDS Logical-Text-Data-Segment + LO Leading Only + LU Logical Unit + LUN Logical Unit Number + MAC Message Authentication Codes + NA Not Applicable + NIC Network Interface Card + NOP No Operation + NSG Next Stage + OS Operating System + PDU Protocol Data Unit + PKI Public Key Infrastructure + R2T Ready To Transfer + R2TSN Ready To Transfer Sequence Number + RDMA Remote Direct Memory Access + RFC Request For Comments + SAM SCSI Architecture Model + SAM2 SCSI Architecture Model - 2 + SAN Storage Area Network + SCSI Small Computer Systems Interface + SN Sequence Number + SNACK Selective Negative Acknowledgment - also + Sequence Number Acknowledgement for data + SPKM Simple Public-Key Mechanism + SRP Secure Remote Password + SSID Session ID + SW Session Wide + TCB Task Control Block + TCP Transmission Control Protocol + TPGT Target Portal Group Tag + TSIH Target Session Identifying Handle + + + +Satran, et al. Standards Track [Page 15] + +RFC 3720 iSCSI April 2004 + + + TTT Target Transfer Tag + UFL Upper Functional Layer + ULP Upper Level Protocol + URN Uniform Resource Names [RFC2396] + UTF Universal Transformation Format + WG Working Group + +2.3. Conventions + + In examples, "I->" and "T->" show iSCSI PDUs sent by the initiator + and target respectively. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in BCP 14 [RFC2119]. + + iSCSI messages - PDUs - are represented by diagrams as in the + following example: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0| Basic Header Segment (BHS) | + +---------------+---------------+---------------+---------------+ + ---------- + +| | + +---------------+---------------+---------------+---------------+ + + The diagrams include byte and bit numbering. + + The following representation and ordering rules are observed in this + document: + + - Word Rule + - Half-word Rule + - Byte Rule + +2.3.1. Word Rule + + A word holds four consecutive bytes. Whenever a word has numeric + content, it is considered an unsigned number in base 2 positional + representation with the lowest numbered byte (e.g., byte 0) bit 0 + representing 2**31 and bit 1 representing 2**30 through lowest + numbered byte + 3 (e.g., byte 3) bit 7 representing 2**0. + + Decimal and hexadecimal representation of word values map this + representation to decimal or hexadecimal positional notation. + + + +Satran, et al. Standards Track [Page 16] + +RFC 3720 iSCSI April 2004 + + +2.3.2. Half-Word Rule + + A half-word holds two consecutive bytes. Whenever a half-word has + numeric content it is considered an unsigned number in base 2 + positional representation with the lowest numbered byte (e.g., byte + 0), bit 0 representing 2**15 and bit 1 representing 2**14 through + lowest numbered byte + 1 (e.g., byte 1), bit 7 representing 2**0. + + Decimal and hexadecimal representation of half-word values map this + representation to decimal or hexadecimal positional notation. + +2.3.3. Byte Rule + + For every PDU, bytes are sent and received in increasing numbered + order (network order). + + Whenever a byte has numerical content, it is considered an unsigned + number in base 2 positional representation with bit 0 representing + 2**7 and bit 1 representing 2**6 through bit 7 representing 2**0. + +3. Overview + +3.1. SCSI Concepts + + The SCSI Architecture Model-2 [SAM2] describes in detail the + architecture of the SCSI family of I/O protocols. This section + provides a brief background of the SCSI architecture and is intended + to familiarize readers with its terminology. + + At the highest level, SCSI is a family of interfaces for requesting + services from I/O devices, including hard drives, tape drives, CD and + DVD drives, printers, and scanners. In SCSI terminology, an + individual I/O device is called a "logical unit" (LU). + + SCSI is a client-server architecture. Clients of a SCSI interface + are called "initiators". Initiators issue SCSI "commands" to request + services from components, logical units, of a server known as a + "target". The "device server" on the logical unit accepts SCSI + commands and processes them. + + A "SCSI transport" maps the client-server SCSI protocol to a specific + interconnect. Initiators are one endpoint of a SCSI transport. The + "target" is the other endpoint. A target can contain multiple + Logical Units (LUs). Each Logical Unit has an address within a + target called a Logical Unit Number (LUN). + + A SCSI task is a SCSI command or possibly a linked set of SCSI + commands. Some LUs support multiple pending (queued) tasks, but the + + + +Satran, et al. Standards Track [Page 17] + +RFC 3720 iSCSI April 2004 + + + queue of tasks is managed by the logical unit. The target uses an + initiator provided "task tag" to distinguish between tasks. Only one + command in a task can be outstanding at any given time. + + Each SCSI command results in an optional data phase and a required + response phase. In the data phase, information can travel from the + initiator to target (e.g., WRITE), target to initiator (e.g., READ), + or in both directions. In the response phase, the target returns the + final status of the operation, including any errors. + + Command Descriptor Blocks (CDB) are the data structures used to + contain the command parameters that an initiator sends to a target. + The CDB content and structure is defined by [SAM2] and device-type + specific SCSI standards. + +3.2. iSCSI Concepts and Functional Overview + + The iSCSI protocol is a mapping of the SCSI remote procedure + invocation model (see [SAM2]) over the TCP protocol. SCSI commands + are carried by iSCSI requests and SCSI responses and status are + carried by iSCSI responses. iSCSI also uses the request response + mechanism for iSCSI protocol mechanisms. + + For the remainder of this document, the terms "initiator" and + "target" refer to "iSCSI initiator node" and "iSCSI target node", + respectively (see Section 3.4.1 iSCSI Architecture Model) unless + otherwise qualified. + + In keeping with similar protocols, the initiator and target divide + their communications into messages. This document uses the term + "iSCSI protocol data unit" (iSCSI PDU) for these messages. + + For performance reasons, iSCSI allows a "phase-collapse". A command + and its associated data may be shipped together from initiator to + target, and data and responses may be shipped together from targets. + + The iSCSI transfer direction is defined with respect to the + initiator. Outbound or outgoing transfers are transfers from an + initiator to a target, while inbound or incoming transfers are from a + target to an initiator. + + An iSCSI task is an iSCSI request for which a response is expected. + + In this document "iSCSI request", "iSCSI command", request, or + (unqualified) command have the same meaning. Also, unless otherwise + specified, status, response, or numbered response have the same + meaning. + + + + +Satran, et al. Standards Track [Page 18] + +RFC 3720 iSCSI April 2004 + + +3.2.1. Layers and Sessions + + The following conceptual layering model is used to specify initiator + and target actions and the way in which they relate to transmitted + and received Protocol Data Units: + + a) the SCSI layer builds/receives SCSI CDBs (Command Descriptor + Blocks) and passes/receives them with the remaining command + execute parameters ([SAM2]) to/from + + b) the iSCSI layer that builds/receives iSCSI PDUs and + relays/receives them to/from one or more TCP connections; the + group of connections form an initiator-target "session". + + Communication between the initiator and target occurs over one or + more TCP connections. The TCP connections carry control messages, + SCSI commands, parameters, and data within iSCSI Protocol Data Units + (iSCSI PDUs). The group of TCP connections that link an initiator + with a target form a session (loosely equivalent to a SCSI I_T nexus, + see Section 3.4.2 SCSI Architecture Model). A session is defined by + a session ID that is composed of an initiator part and a target part. + TCP connections can be added and removed from a session. Each + connection within a session is identified by a connection ID (CID). + + Across all connections within a session, an initiator sees one + "target image". All target identifying elements, such as LUN, are + the same. A target also sees one "initiator image" across all + connections within a session. Initiator identifying elements, such + as the Initiator Task Tag, are global across the session regardless + of the connection on which they are sent or received. + + iSCSI targets and initiators MUST support at least one TCP connection + and MAY support several connections in a session. For error recovery + purposes, targets and initiators that support a single active + connection in a session SHOULD support two connections during + recovery. + +3.2.2. Ordering and iSCSI Numbering + + iSCSI uses Command and Status numbering schemes and a Data sequencing + scheme. + + Command numbering is session-wide and is used for ordered command + delivery over multiple connections. It can also be used as a + mechanism for command flow control over a session. + + + + + + +Satran, et al. Standards Track [Page 19] + +RFC 3720 iSCSI April 2004 + + + Status numbering is per connection and is used to enable missing + status detection and recovery in the presence of transient or + permanent communication errors. + + Data sequencing is per command or part of a command (R2T triggered + sequence) and is used to detect missing data and/or R2T PDUs due to + header digest errors. + + Typically, fields in the iSCSI PDUs communicate the Sequence Numbers + between the initiator and target. During periods when traffic on a + connection is unidirectional, iSCSI NOP-Out/In PDUs may be utilized + to synchronize the command and status ordering counters of the target + and initiator. + + The iSCSI session abstraction is equivalent to the SCSI I_T nexus, + and the iSCSI session provides an ordered command delivery from the + SCSI initiator to the SCSI target. For detailed design + considerations that led to the iSCSI session model as it is defined + here and how it relates the SCSI command ordering features defined in + SCSI specifications to the iSCSI concepts see [CORD]. + +3.2.2.1. Command Numbering and Acknowledging + + iSCSI performs ordered command delivery within a session. All + commands (initiator-to-target PDUs) in transit from the initiator to + the target are numbered. + + iSCSI considers a task to be instantiated on the target in response + to every request issued by the initiator. A set of task management + operations including abort and reassign (see Section 10.5 Task + Management Function Request) may be performed on any iSCSI task. + + Some iSCSI tasks are SCSI tasks, and many SCSI activities are related + to a SCSI task ([SAM2]). In all cases, the task is identified by the + Initiator Task Tag for the life of the task. + + The command number is carried by the iSCSI PDU as CmdSN + (Command Sequence Number). The numbering is session-wide. Outgoing + iSCSI PDUs carry this number. The iSCSI initiator allocates CmdSNs + with a 32-bit unsigned counter (modulo 2**32). Comparisons and + arithmetic on CmdSN use Serial Number Arithmetic as defined in + [RFC1982] where SERIAL_BITS = 32. + + Commands meant for immediate delivery are marked with an immediate + delivery flag; they MUST also carry the current CmdSN. CmdSN does + not advance after a command marked for immediate delivery is sent. + + + + + +Satran, et al. Standards Track [Page 20] + +RFC 3720 iSCSI April 2004 + + + Command numbering starts with the first login request on the first + connection of a session (the leading login on the leading connection) + and command numbers are incremented by 1 for every non-immediate + command issued afterwards. + + If immediate delivery is used with task management commands, these + commands may reach the target before the tasks on which they are + supposed to act. However their CmdSN serves as a marker of their + position in the stream of commands. The initiator and target must + ensure that the task management commands act as specified by [SAM2]. + For example, both commands and responses appear as if delivered in + order. Whenever CmdSN for an outgoing PDU is not specified by an + explicit rule, CmdSN will carry the current value of the local CmdSN + variable (see later in this section). + + The means by which an implementation decides to mark a PDU for + immediate delivery or by which iSCSI decides by itself to mark a PDU + for immediate delivery are beyond the scope of this document. + + The number of commands used for immediate delivery is not limited and + their delivery for execution is not acknowledged through the + numbering scheme. Immediate commands MAY be rejected by the iSCSI + target layer due to a lack of resources. An iSCSI target MUST be + able to handle at least one immediate task management command and one + immediate non-task-management iSCSI command per connection at any + time. + + In this document, delivery for execution means delivery to the SCSI + execution engine or an iSCSI protocol specific execution engine + (e.g., for text requests with public or private extension keys + involving an execution component). With the exception of the + commands marked for immediate delivery, the iSCSI target layer MUST + deliver the commands for execution in the order specified by CmdSN. + Commands marked for immediate delivery may be delivered by the iSCSI + target layer for execution as soon as detected. iSCSI may avoid + delivering some commands to the SCSI target layer if required by a + prior SCSI or iSCSI action (e.g., CLEAR TASK SET Task Management + request received before all the commands on which it was supposed to + act). + + On any connection, the iSCSI initiator MUST send the commands in + increasing order of CmdSN, except for commands that are retransmitted + due to digest error recovery and connection recovery. + + For the numbering mechanism, the initiator and target maintain the + following three variables for each session: + + + + + +Satran, et al. Standards Track [Page 21] + +RFC 3720 iSCSI April 2004 + + + - CmdSN - the current command Sequence Number, advanced by 1 on + each command shipped except for commands marked for immediate + delivery. CmdSN always contains the number to be assigned to + the next Command PDU. + - ExpCmdSN - the next expected command by the target. The target + acknowledges all commands up to, but not including, this + number. The initiator treats all commands with CmdSN less than + ExpCmdSN as acknowledged. The target iSCSI layer sets the + ExpCmdSN to the largest non-immediate CmdSN that it can deliver + for execution plus 1 (no holes in the CmdSN sequence). + - MaxCmdSN - the maximum number to be shipped. The queuing + capacity of the receiving iSCSI layer is MaxCmdSN - ExpCmdSN + + 1. + + The initiator's ExpCmdSN and MaxCmdSN are derived from + target-to-initiator PDU fields. Comparisons and arithmetic on + ExpCmdSN and MaxCmdSN MUST use Serial Number Arithmetic as defined in + [RFC1982] where SERIAL_BITS = 32. + + The target MUST NOT transmit a MaxCmdSN that is less than + ExpCmdSN-1. For non-immediate commands, the CmdSN field can take any + value from ExpCmdSN to MaxCmdSN inclusive. The target MUST silently + ignore any non-immediate command outside of this range or non- + immediate duplicates within the range. The CmdSN carried by + immediate commands may lie outside the ExpCmdSN to MaxCmdSN range. + For example, if the initiator has previously sent a non-immediate + command carrying the CmdSN equal to MaxCmdSN, the target window is + closed. For group task management commands issued as immediate + commands, CmdSN indicates the scope of the group action (e.g., on + ABORT TASK SET indicates which commands are aborted). + + MaxCmdSN and ExpCmdSN fields are processed by the initiator as + follows: + + - If the PDU MaxCmdSN is less than the PDU ExpCmdSN-1 (in Serial + Arithmetic Sense), they are both ignored. + - If the PDU MaxCmdSN is greater than the local MaxCmdSN (in + Serial Arithmetic Sense), it updates the local MaxCmdSN; + otherwise, it is ignored. + - If the PDU ExpCmdSN is greater than the local ExpCmdSN (in + Serial Arithmetic Sense), it updates the local ExpCmdSN; + otherwise, it is ignored. + + This sequence is required because updates may arrive out of order + (e.g., the updates are sent on different TCP connections). + + iSCSI initiators and targets MUST support the command numbering + scheme. + + + +Satran, et al. Standards Track [Page 22] + +RFC 3720 iSCSI April 2004 + + + A numbered iSCSI request will not change its allocated CmdSN, + regardless of the number of times and circumstances in which it is + reissued (see Section 6.2.1 Usage of Retry). At the target, CmdSN is + only relevant when the command has not created any state related to + its execution (execution state); afterwards, CmdSN becomes + irrelevant. Testing for the execution state (represented by + identifying the Initiator Task Tag) MUST precede any other action at + the target. If no execution state is found, it is followed by + ordering and delivery. If an execution state is found, it is + followed by delivery. + + If an initiator issues a command retry for a command with CmdSN R on + a connection when the session CmdSN value is Q, it MUST NOT advance + the CmdSN past R + 2**31 -1 unless the connection is no longer + operational (i.e., it has returned to the FREE state, see Section + 7.1.3 Standard Connection State Diagram for an Initiator), the + connection has been reinstated (see Section 5.3.4 Connection + Reinstatement), or a non-immediate command with CmdSN equal or + greater than Q was issued subsequent to the command retry on the same + connection and the reception of that command is acknowledged by the + target (see Section 9.4 Command Retry and Cleaning Old Command + Instances). + + A target MUST NOT issue a command response or Data-In PDU with status + before acknowledging the command. However, the acknowledgement can + be included in the response or Data-In PDU. + +3.2.2.2. Response/Status Numbering and Acknowledging + + Responses in transit from the target to the initiator are numbered. + The StatSN (Status Sequence Number) is used for this purpose. StatSN + is a counter maintained per connection. ExpStatSN is used by the + initiator to acknowledge status. The status sequence number space is + 32-bit unsigned-integers and the arithmetic operations are the + regular mod(2**32) arithmetic. + + Status numbering starts with the Login response to the first Login + request of the connection. The Login response includes an initial + value for status numbering (any initial value is valid). + + To enable command recovery, the target MAY maintain enough state + information for data and status recovery after a connection failure. + A target doing so can safely discard all of the state information + maintained for recovery of a command after the delivery of the status + for the command (numbered StatSN) is acknowledged through ExpStatSN. + + A large absolute difference between StatSN and ExpStatSN may indicate + a failed connection. Initiators MUST undertake recovery actions if + + + +Satran, et al. Standards Track [Page 23] + +RFC 3720 iSCSI April 2004 + + + the difference is greater than an implementation defined constant + that MUST NOT exceed 2**31-1. + + Initiators and Targets MUST support the response-numbering scheme. + +3.2.2.3. Data Sequencing + + Data and R2T PDUs transferred as part of some command execution MUST + be sequenced. The DataSN field is used for data sequencing. For + input (read) data PDUs, DataSN starts with 0 for the first data PDU + of an input command and advances by 1 for each subsequent data PDU. + For output data PDUs, DataSN starts with 0 for the first data PDU of + a sequence (the initial unsolicited sequence or any data PDU sequence + issued to satisfy an R2T) and advances by 1 for each subsequent data + PDU. R2Ts are also sequenced per command. For example, the first + R2T has an R2TSN of 0 and advances by 1 for each subsequent R2T. For + bidirectional commands, the target uses the DataSN/R2TSN to sequence + Data-In and R2T PDUs in one continuous sequence (undifferentiated). + Unlike command and status, data PDUs and R2Ts are not acknowledged by + a field in regular outgoing PDUs. Data-In PDUs can be acknowledged + on demand by a special form of the SNACK PDU. Data and R2T PDUs are + implicitly acknowledged by status for the command. The DataSN/R2TSN + field enables the initiator to detect missing data or R2T PDUs. + + For any read or bidirectional command, a target MUST issue less than + 2**32 combined R2T and Data-In PDUs. Any output data sequence MUST + contain less than 2**32 Data-Out PDUs. + +3.2.3. iSCSI Login + + The purpose of the iSCSI login is to enable a TCP connection for + iSCSI use, authentication of the parties, negotiation of the + session's parameters and marking of the connection as belonging to an + iSCSI session. + + A session is used to identify to a target all the connections with a + given initiator that belong to the same I_T nexus. (For more details + on how a session relates to an I_T nexus, see Section 3.4.2 SCSI + Architecture Model). + + The targets listen on a well-known TCP port or other TCP port for + incoming connections. The initiator begins the login process by + connecting to one of these TCP ports. + + As part of the login process, the initiator and target SHOULD + authenticate each other and MAY set a security association protocol + for the session. This can occur in many different ways and is + subject to negotiation. + + + +Satran, et al. Standards Track [Page 24] + +RFC 3720 iSCSI April 2004 + + + To protect the TCP connection, an IPsec security association MAY be + established before the Login request. For information on using IPsec + security for iSCSI see Chapter 8 and [RFC3723]. + + The iSCSI Login Phase is carried through Login requests and + responses. Once suitable authentication has occurred and operational + parameters have been set, the session transitions to the Full Feature + Phase and the initiator may start to send SCSI commands. The + security policy for whether, and by what means, a target chooses to + authorize an initiator is beyond the scope of this document. For a + more detailed description of the Login Phase, see Chapter 5. + + The login PDU includes the ISID part of the session ID (SSID). The + target portal group that services the login is implied by the + selection of the connection endpoint. For a new session, the TSIH is + zero. As part of the response, the target generates a TSIH. + + During session establishment, the target identifies the SCSI + initiator port (the "I" in the "I_T nexus") through the value pair + (InitiatorName, ISID). We describe InitiatorName later in this + section. Any persistent state (e.g., persistent reservations) on the + target that is associated with a SCSI initiator port is identified + based on this value pair. Any state associated with the SCSI target + port (the "T" in the "I_T nexus") is identified externally by the + TargetName and portal group tag (see Section 3.4.1 iSCSI Architecture + Model). ISID is subject to reuse restrictions because it is used to + identify a persistent state (see Section 3.4.3 Consequences of the + Model). + + Before the Full Feature Phase is established, only Login Request and + Login Response PDUs are allowed. Login requests and responses MUST + be used exclusively during Login. On any connection, the login phase + MUST immediately follow TCP connection establishment and a subsequent + Login Phase MUST NOT occur before tearing down a connection. + + A target receiving any PDU except a Login request before the Login + phase is started MUST immediately terminate the connection on which + the PDU was received. Once the Login phase has started, if the + target receives any PDU except a Login request, it MUST send a Login + reject (with Status "invalid during login") and then disconnect. If + the initiator receives any PDU except a Login response, it MUST + immediately terminate the connection. + +3.2.4. iSCSI Full Feature Phase + + Once the initiator is authorized to do so, the iSCSI session is in + the iSCSI Full Feature Phase. A session is in Full Feature Phase + after successfully finishing the Login Phase on the first (leading) + + + +Satran, et al. Standards Track [Page 25] + +RFC 3720 iSCSI April 2004 + + + connection of a session. A connection is in Full Feature Phase if + the session is in Full Feature Phase and the connection login has + completed successfully. An iSCSI connection is not in Full Feature + Phase + + a) when it does not have an established transport connection, + + OR + + b) when it has a valid transport connection, but a successful + login was not performed or the connection is currently logged + out. + + In a normal Full Feature Phase, the initiator may send SCSI commands + and data to the various LUs on the target by encapsulating them in + iSCSI PDUs that go over the established iSCSI session. + +3.2.4.1. Command Connection Allegiance + + For any iSCSI request issued over a TCP connection, the corresponding + response and/or other related PDU(s) MUST be sent over the same + connection. We call this "connection allegiance". If the original + connection fails before the command is completed, the connection + allegiance of the command may be explicitly reassigned to a different + transport connection as described in detail in Section 6.2 Retry and + Reassign in Recovery. + + Thus, if an initiator issues a READ command, the target MUST send the + requested data, if any, followed by the status to the initiator over + the same TCP connection that was used to deliver the SCSI command. + If an initiator issues a WRITE command, the initiator MUST send the + data, if any, for that command over the same TCP connection that was + used to deliver the SCSI command. The target MUST return Ready To + Transfer (R2T), if any, and the status over the same TCP connection + that was used to deliver the SCSI command. Retransmission requests + (SNACK PDUs) and the data and status that they generate MUST also use + the same connection. + + However, consecutive commands that are part of a SCSI linked + command-chain task (see [SAM2]) MAY use different connections. + Connection allegiance is strictly per-command and not per-task. + During the iSCSI Full Feature Phase, the initiator and target MAY + interleave unrelated SCSI commands, their SCSI Data, and responses + over the session. + + + + + + + +Satran, et al. Standards Track [Page 26] + +RFC 3720 iSCSI April 2004 + + +3.2.4.2. Data Transfer Overview + + Outgoing SCSI data (initiator to target user data or command + parameters) is sent as either solicited data or unsolicited data. + Solicited data are sent in response to R2T PDUs. Unsolicited data + can be sent as part of an iSCSI command PDU ("immediate data") or in + separate iSCSI data PDUs. + + Immediate data are assumed to originate at offset 0 in the initiator + SCSI write-buffer (outgoing data buffer). All other Data PDUs have + the buffer offset set explicitly in the PDU header. + + An initiator may send unsolicited data up to FirstBurstLength as + immediate (up to the negotiated maximum PDU length), in a separate + PDU sequence or both. All subsequent data MUST be solicited. The + maximum length of an individual data PDU or the immediate-part of the + first unsolicited burst MAY be negotiated at login. + + The maximum amount of unsolicited data that can be sent with a + command is negotiated at login through the FirstBurstLength key. A + target MAY separately enable immediate data (through the + ImmediateData key) without enabling the more general (separate data + PDUs) form of unsolicited data (through the InitialR2T key). + + Unsolicited data on write are meant to reduce the effect of latency + on throughput (no R2T is needed to start sending data). In addition, + immediate data is meant to reduce the protocol overhead (both + bandwidth and execution time). + + An iSCSI initiator MAY choose not to send unsolicited data, only + immediate data or FirstBurstLength bytes of unsolicited data with a + command. If any non-immediate unsolicited data is sent, the total + unsolicited data MUST be either FirstBurstLength, or all of the data + if the total amount is less than the FirstBurstLength. + + It is considered an error for an initiator to send unsolicited data + PDUs to a target that operates in R2T mode (only solicited data are + allowed). It is also an error for an initiator to send more + unsolicited data, whether immediate or as separate PDUs, than + FirstBurstLength. + + An initiator MUST honor an R2T data request for a valid outstanding + command (i.e., carrying a valid Initiator Task Tag) and deliver all + the requested data provided the command is supposed to deliver + outgoing data and the R2T specifies data within the command bounds. + The initiator action is unspecified for receiving an R2T request that + specifies data, all or part, outside of the bounds of the command. + + + + +Satran, et al. Standards Track [Page 27] + +RFC 3720 iSCSI April 2004 + + + A target SHOULD NOT silently discard data and then request + retransmission through R2T. Initiators SHOULD NOT keep track of the + data transferred to or from the target (scoreboarding). SCSI targets + perform residual count calculation to check how much data was + actually transferred to or from the device by a command. This may + differ from the amount the initiator sent and/or received for reasons + such as retransmissions and errors. Read or bidirectional commands + implicitly solicit the transmission of the entire amount of data + covered by the command. SCSI data packets are matched to their + corresponding SCSI commands by using tags specified in the protocol. + + In addition, iSCSI initiators and targets MUST enforce some ordering + rules. When unsolicited data is used, the order of the unsolicited + data on each connection MUST match the order in which the commands on + that connection are sent. Command and unsolicited data PDUs may be + interleaved on a single connection as long as the ordering + requirements of each are maintained (e.g., command N+1 MAY be sent + before the unsolicited Data-Out PDUs for command N, but the + unsolicited Data-Out PDUs for command N MUST precede the unsolicited + Data-Out PDUs of command N+1). A target that receives data out of + order MAY terminate the session. + +3.2.4.3. Tags and Integrity Checks + + Initiator tags for pending commands are unique initiator-wide for a + session. Target tags are not strictly specified by the protocol. It + is assumed that target tags are used by the target to tag (alone or + in combination with the LUN) the solicited data. Target tags are + generated by the target and "echoed" by the initiator. These + mechanisms are designed to accomplish efficient data delivery along + with a large degree of control over the data flow. + + As the Initiator Task Tag is used to identify a task during its + execution, the iSCSI initiator and target MUST verify that all other + fields used in task-related PDUs have values that are consistent with + the values used at the task instantiation based on the Initiator Task + Tag (e.g., the LUN used in an R2T PDU MUST be the same as the one + used in the SCSI command PDU used to instantiate the task). Using + inconsistent field values is considered a protocol error. + +3.2.4.4. Task Management + + SCSI task management assumes that individual tasks and task groups + can be aborted solely based on the task tags (for individual tasks) + or the timing of the task management command (for task groups), and + that the task management action is executed synchronously - i.e., no + message involving an aborted task will be seen by the SCSI initiator + after receiving the task management response. In iSCSI initiators + + + +Satran, et al. Standards Track [Page 28] + +RFC 3720 iSCSI April 2004 + + + and targets interact asynchronously over several connections. iSCSI + specifies the protocol mechanism and implementation requirements + needed to present a synchronous view while using an asynchronous + infrastructure. + +3.2.5. iSCSI Connection Termination + + An iSCSI connection may be terminated by use of a transport + connection shutdown or a transport reset. Transport reset is assumed + to be an exceptional event. + + Graceful TCP connection shutdowns are done by sending TCP FINs. A + graceful transport connection shutdown SHOULD only be initiated by + either party when the connection is not in iSCSI Full Feature Phase. + A target MAY terminate a Full Feature Phase connection on internal + exception events, but it SHOULD announce the fact through an + Asynchronous Message PDU. Connection termination with outstanding + commands may require recovery actions. + + If a connection is terminated while in Full Feature Phase, connection + cleanup (see section 7) is required prior to recovery. By doing + connection cleanup before starting recovery, the initiator and target + will avoid receiving stale PDUs after recovery. + +3.2.6. iSCSI Names + + Both targets and initiators require names for the purpose of + identification. In addition, names enable iSCSI storage resources to + be managed regardless of location (address). An iSCSI node name is + also the SCSI device name of an iSCSI device. The iSCSI name of a + SCSI device is the principal object used in authentication of targets + to initiators and initiators to targets. This name is also used to + identify and manage iSCSI storage resources. + + iSCSI names must be unique within the operational domain of the end + user. However, because the operational domain of an IP network is + potentially worldwide, the iSCSI name formats are architected to be + worldwide unique. To assist naming authorities in the construction + of worldwide unique names, iSCSI provides two name formats for + different types of naming authorities. + + iSCSI names are associated with iSCSI nodes, and not iSCSI network + adapter cards, to ensure that the replacement of network adapter + cards does not require reconfiguration of all SCSI and iSCSI resource + allocation information. + + + + + + +Satran, et al. Standards Track [Page 29] + +RFC 3720 iSCSI April 2004 + + + Some SCSI commands require that protocol-specific identifiers be + communicated within SCSI CDBs. See Section 3.4.2 SCSI Architecture + Model for the definition of the SCSI port name/identifier for iSCSI + ports. + + An initiator may discover the iSCSI Target Names to which it has + access, along with their addresses, using the SendTargets text + request, or other techniques discussed in [RFC3721]. + +3.2.6.1. iSCSI Name Properties + + Each iSCSI node, whether an initiator or target, MUST have an iSCSI + name. + + Initiators and targets MUST support the receipt of iSCSI names of up + to the maximum length of 223 bytes. + + The initiator MUST present both its iSCSI Initiator Name and the + iSCSI Target Name to which it wishes to connect in the first login + request of a new session or connection. The only exception is if a + discovery session (see Section 2.3 iSCSI Session Types) is to be + established. In this case, the iSCSI Initiator Name is still + required, but the iSCSI Target Name MAY be omitted. + + iSCSI names have the following properties: + + a) iSCSI names are globally unique. No two initiators or targets + can have the same name. + b) iSCSI names are permanent. An iSCSI initiator node or target + node has the same name for its lifetime. + c) iSCSI names do not imply a location or address. An iSCSI + initiator or target can move, or have multiple addresses. A + change of address does not imply a change of name. + d) iSCSI names do not rely on a central name broker; the naming + authority is distributed. + e) iSCSI names support integration with existing unique naming + schemes. + f) iSCSI names rely on existing naming authorities. iSCSI does + not create any new naming authority. + + The encoding of an iSCSI name has the following properties: + + a) iSCSI names have the same encoding method regardless of the + underlying protocols. + b) iSCSI names are relatively simple to compare. The algorithm + for comparing two iSCSI names for equivalence does not rely on + an external server. + + + + +Satran, et al. Standards Track [Page 30] + +RFC 3720 iSCSI April 2004 + + + c) iSCSI names are composed only of displayable characters. iSCSI + names allow the use of international character sets but are not + case sensitive. No whitespace characters are used in iSCSI + names. + d) iSCSI names may be transported using both binary and + ASCII-based protocols. + + An iSCSI name really names a logical software entity, and is not tied + to a port or other hardware that can be changed. For instance, an + initiator name should name the iSCSI initiator node, not a particular + NIC or HBA. When multiple NICs are used, they should generally all + present the same iSCSI initiator name to the targets, because they + are simply paths to the same SCSI layer. In most operating systems, + the named entity is the operating system image. + + Similarly, a target name should not be tied to hardware interfaces + that can be changed. A target name should identify the logical + target and must be the same for the target regardless of the physical + portion being addressed. This assists iSCSI initiators in + determining that the two targets it has discovered are really two + paths to the same target. + + The iSCSI name is designed to fulfill the functional requirements for + Uniform Resource Names (URN) [RFC1737]. For example, it is required + that the name have a global scope, be independent of address or + location, and be persistent and globally unique. Names must be + extensible and scalable with the use of naming authorities. The name + encoding should be both human and machine readable. See [RFC1737] + for further requirements. + +3.2.6.2. iSCSI Name Encoding + + An iSCSI name MUST be a UTF-8 encoding of a string of Unicode + characters with the following properties: + + - It is in Normalization Form C (see "Unicode Normalization + Forms" [UNICODE]). + - It only contains characters allowed by the output of the iSCSI + stringprep template (described in [RFC3722]). + - The following characters are used for formatting iSCSI names: + + - dash ('-'=U+002d) + - dot ('.'=U+002e) + - colon (':'=U+003a) + + - The UTF-8 encoding of the name is not larger than 223 bytes. + + + + + +Satran, et al. Standards Track [Page 31] + +RFC 3720 iSCSI April 2004 + + + The stringprep process is described in [RFC3454]; iSCSI's use of the + stringprep process is described in [RFC3722]. Stringprep is a method + designed by the Internationalized Domain Name (IDN) working group to + translate human-typed strings into a format that can be compared as + opaque strings. Strings MUST NOT include punctuation, spacing, + diacritical marks, or other characters that could get in the way of + readability. The stringprep process also converts strings into + equivalent strings of lower-case characters. + + The stringprep process does not need to be implemented if the names + are only generated using numeric and lower-case (any character set) + alphabetic characters. + + Once iSCSI names encoded in UTF-8 are "normalized" they may be safely + compared byte-for-byte. + +3.2.6.3. iSCSI Name Structure + + An iSCSI name consists of two parts--a type designator followed by a + unique name string. + + The iSCSI name does not define any new naming authorities. Instead, + it supports two existing ways of designating naming authorities: an + iSCSI-Qualified Name, using domain names to identify a naming + authority, and the EUI format, where the IEEE Registration Authority + assists in the formation of worldwide unique names (EUI-64 format). + + The type designator strings currently defined are: + + iqn. - iSCSI Qualified name + eui. - Remainder of the string is an IEEE EUI-64 + identifier, in ASCII-encoded hexadecimal. + + These two naming authority designators were considered sufficient at + the time of writing this document. The creation of additional naming + type designators for iSCSI may be considered by the IETF and detailed + in separate RFCs. + +3.2.6.3.1. Type "iqn." (iSCSI Qualified Name) + + This iSCSI name type can be used by any organization that owns a + domain name. This naming format is useful when an end user or + service provider wishes to assign iSCSI names for targets and/or + initiators. + + To generate names of this type, the person or organization generating + the name must own a registered domain name. This domain name does + not have to be active, and does not have to resolve to an address; it + + + +Satran, et al. Standards Track [Page 32] + +RFC 3720 iSCSI April 2004 + + + just needs to be reserved to prevent others from generating iSCSI + names using the same domain name. + + Since a domain name can expire, be acquired by another entity, or may + be used to generate iSCSI names by both owners, the domain name must + be additionally qualified by a date during which the naming authority + owned the domain name. For this reason, a date code is provided as + part of the "iqn." format. + + The iSCSI qualified name string consists of: + + - The string "iqn.", used to distinguish these names from "eui." + formatted names. + - A date code, in yyyy-mm format. This date MUST be a date + during which the naming authority owned the domain name used in + this format, and SHOULD be the first month in which the domain + name was owned by this naming authority at 00:01 GMT of the + first day of the month. This date code uses the Gregorian + calendar. All four digits in the year must be present. Both + digits of the month must be present, with January == "01" and + December == "12". The dash must be included. + - A dot "." + - The reversed domain name of the naming authority (person or + organization) creating this iSCSI name. + - An optional, colon (:) prefixed, string within the character + set and length boundaries that the owner of the domain name + deems appropriate. This may contain product types, serial + numbers, host identifiers, or software keys (e.g., it may + include colons to separate organization boundaries). With the + exception of the colon prefix, the owner of the domain name can + assign everything after the reversed domain name as desired. + It is the responsibility of the entity that is the naming + authority to ensure that the iSCSI names it assigns are + worldwide unique. For example, "Example Storage Arrays, Inc.", + might own the domain name "example.com". + + The following are examples of iSCSI qualified names that might be + generated by "EXAMPLE Storage Arrays, Inc." + + Naming String defined by + Type Date Auth "example.com" naming authority + +--++-----+ +---------+ +--------------------------------+ + | || | | | | | + + iqn.2001-04.com.example:storage:diskarrays-sn-a8675309 + iqn.2001-04.com.example + iqn.2001-04.com.example:storage.tape1.sys1.xyz + iqn.2001-04.com.example:storage.disk2.sys1.xyz + + + +Satran, et al. Standards Track [Page 33] + +RFC 3720 iSCSI April 2004 + + + +3.2.6.3.2. Type "eui." (IEEE EUI-64 format) + + The IEEE Registration Authority provides a service for assigning + globally unique identifiers [EUI]. The EUI-64 format is used to + build a global identifier in other network protocols. For example, + Fibre Channel defines a method of encoding it into a WorldWideName. + For more information on registering for EUI identifiers, see [OUI]. + + The format is "eui." followed by an EUI-64 identifier (16 + ASCII-encoded hexadecimal digits). + + Example iSCSI name: + + Type EUI-64 identifier (ASCII-encoded hexadecimal) + +--++--------------+ + | || | + eui.02004567A425678D + + The IEEE EUI-64 iSCSI name format might be used when a manufacturer + is already registered with the IEEE Registration Authority and uses + EUI-64 formatted worldwide unique names for its products. + + More examples of name construction are discussed in [RFC3721]. + +3.2.7. Persistent State + + iSCSI does not require any persistent state maintenance across + sessions. However, in some cases, SCSI requires persistent + identification of the SCSI initiator port name (See Section 3.4.2 + SCSI Architecture Model and Section 3.4.3 Consequences of the Model). + + iSCSI sessions do not persist through power cycles and boot + operations. + + All iSCSI session and connection parameters are re-initialized upon + session and connection creation. + + Commands persist beyond connection termination if the session + persists and command recovery within the session is supported. + However, when a connection is dropped, command execution, as + perceived by iSCSI (i.e., involving iSCSI protocol exchanges for the + affected task), is suspended until a new allegiance is established by + the 'task reassign' task management function. (See Section 10.5 Task + Management Function Request.) + + + + + + +Satran, et al. Standards Track [Page 34] + +RFC 3720 iSCSI April 2004 + + +3.2.8. Message Synchronization and Steering + + iSCSI presents a mapping of the SCSI protocol onto TCP. This + encapsulation is accomplished by sending iSCSI PDUs of varying + lengths. Unfortunately, TCP does not have a built-in mechanism for + signaling message boundaries at the TCP layer. iSCSI overcomes this + obstacle by placing the message length in the iSCSI message header. + This serves to delineate the end of the current message as well as + the beginning of the next message. + + In situations where IP packets are delivered in order from the + network, iSCSI message framing is not an issue and messages are + processed one after the other. In the presence of IP packet + reordering (i.e., frames being dropped), legacy TCP implementations + store the "out of order" TCP segments in temporary buffers until the + missing TCP segments arrive, upon which the data must be copied to + the application buffers. In iSCSI, it is desirable to steer the SCSI + data within these out of order TCP segments into the pre-allocated + SCSI buffers rather than store them in temporary buffers. This + decreases the need for dedicated reassembly buffers as well as the + latency and bandwidth related to extra copies. + + Relying solely on the "message length" information from the iSCSI + message header may make it impossible to find iSCSI message + boundaries in subsequent TCP segments due to the loss of a TCP + segment that contains the iSCSI message length. The missing TCP + segment(s) must be received before any of the following segments can + be steered to the correct SCSI buffers (due to the inability to + determine the iSCSI message boundaries). Since these segments cannot + be steered to the correct location, they must be saved in temporary + buffers that must then be copied to the SCSI buffers. + + Different schemes can be used to recover synchronization. To make + these schemes work, iSCSI implementations have to make sure that the + appropriate protocol layers are provided with enough information to + implement a synchronization and/or data steering mechanism. One of + these schemes is detailed in Appendix A. - Sync and Steering with + Fixed Interval Markers -. + + The Fixed Interval Markers (FIM) scheme works by inserting markers in + the payload stream at fixed intervals that contain the offset for the + start of the next iSCSI PDU. + + Under normal circumstances (no PDU loss or data reception out of + order), iSCSI data steering can be accomplished by using the + identifying tag and the data offset fields in the iSCSI header in + addition to the TCP sequence number from the TCP header. The + + + + +Satran, et al. Standards Track [Page 35] + +RFC 3720 iSCSI April 2004 + + + identifying tag helps associate the PDU with a SCSI buffer address + while the data offset and TCP sequence number are used to determine + the offset within the buffer. + + When the part of the TCP data stream containing an iSCSI PDU header + is delayed or lost, markers may be used to minimize the damage as + follows: + + - Markers indicate where the next iSCSI PDU starts and enable + continued processing when iSCSI headers have to be dropped due to + data errors discovered at the iSCSI level (e.g., iSCSI header CRC + errors). + + - Markers help minimize the amount of data that has to be kept by + the TCP/iSCSI layer while waiting for a late TCP packet arrival + or recovery, because later they might help find iSCSI PDU headers + and use the information contained in those to steer data to SCSI + buffers. + +3.2.8.1. Sync/Steering and iSCSI PDU Length + + When a large iSCSI message is sent, the TCP segment(s) that contain + the iSCSI header may be lost. The remaining TCP segment(s), up to + the next iSCSI message, must be buffered (in temporary buffers) + because the iSCSI header that indicates to which SCSI buffers the + data are to be steered was lost. To minimize the amount of + buffering, it is recommended that the iSCSI PDU length be restricted + to a small value (perhaps a few TCP segments in length). During + login, each end of the iSCSI session specifies the maximum iSCSI PDU + length it will accept. + +3.3. iSCSI Session Types + + iSCSI defines two types of sessions: + + a) Normal operational session - an unrestricted session. + b) Discovery-session - a session only opened for target + discovery. The target MUST ONLY accept text requests with the + SendTargets key and a logout request with the reason "close + the session". All other requests MUST be rejected. + + The session type is defined during login with the key=value parameter + in the login command. + + + + + + + + +Satran, et al. Standards Track [Page 36] + +RFC 3720 iSCSI April 2004 + + +3.4. SCSI to iSCSI Concepts Mapping Model + + The following diagram shows an example of how multiple iSCSI Nodes + (targets in this case) can coexist within the same Network Entity and + can share Network Portals (IP addresses and TCP ports). Other more + complex configurations are also possible. For detailed descriptions + of the components of these diagrams, see Section 3.4.1 iSCSI + Architecture Model. + + +-----------------------------------+ + | Network Entity (iSCSI Client) | + | | + | +-------------+ | + | | iSCSI Node | | + | | (Initiator) | | + | +-------------+ | + | | | | + | +--------------+ +--------------+ | + | |Network Portal| |Network Portal| | + | | 10.1.30.4 | | 10.1.40.6 | | + +-+--------------+-+--------------+-+ + | | + | IP Networks | + | | + +-+--------------+-+--------------+-+ + | |Network Portal| |Network Portal| | + | | 10.1.30.21 | | 10.1.40.3 | | + | | TCP Port 3260| | TCP Port 3260| | + | +--------------+ +--------------+ | + | | | | + | ----------------- | + | | | | + | +-------------+ +--------------+ | + | | iSCSI Node | | iSCSI Node | | + | | (Target) | | (Target) | | + | +-------------+ +--------------+ | + | | + | Network Entity (iSCSI Server) | + +-----------------------------------+ + +3.4.1. iSCSI Architecture Model + + This section describes the part of the iSCSI architecture model that + has the most bearing on the relationship between iSCSI and the SCSI + Architecture Model. + + + + + + +Satran, et al. Standards Track [Page 37] + +RFC 3720 iSCSI April 2004 + + + a) Network Entity - represents a device or gateway that is + accessible from the IP network. A Network Entity must have + one or more Network Portals (see item d), each of which can be + used by some iSCSI Nodes (see item (b)) contained in that + Network Entity to gain access to the IP network. + + b) iSCSI Node - represents a single iSCSI initiator or iSCSI + target. There are one or more iSCSI Nodes within a Network + Entity. The iSCSI Node is accessible via one or more Network + Portals (see item d). An iSCSI Node is identified by its + iSCSI Name (see Section 3.2.6 iSCSI Names and Chapter 12). + The separation of the iSCSI Name from the addresses used by + and for the iSCSI node allows multiple iSCSI nodes to use the + same addresses, and the same iSCSI node to use multiple + addresses. + + c) An alias string may also be associated with an iSCSI Node. + The alias allows an organization to associate a user friendly + string with the iSCSI Name. However, the alias string is not + a substitute for the iSCSI Name. + + d) Network Portal - a component of a Network Entity that has a + TCP/IP network address and that may be used by an iSCSI Node + within that Network Entity for the connection(s) within one of + its iSCSI sessions. In an initiator, it is identified by its + IP address. In a target, it is identified by its IP address + and its listening TCP port. + + e) Portal Groups - iSCSI supports multiple connections within the + same session; some implementations will have the ability to + combine connections in a session across multiple Network + Portals. A Portal Group defines a set of Network Portals + within an iSCSI Node that collectively supports the capability + of coordinating a session with connections that span these + portals. Not all Network Portals within a Portal Group need + to participate in every session connected through that Portal + Group. One or more Portal Groups may provide access to an + iSCSI Node. Each Network Portal, as utilized by a given iSCSI + Node, belongs to exactly one portal group within that node. + Portal Groups are identified within an iSCSI Node by a portal + group tag, a simple unsigned-integer between 0 and 65535 (see + Section 12.3 SendTargets). All Network Portals with the same + portal group tag in the context of a given iSCSI Node are in + the same Portal Group. + + + + + + + +Satran, et al. Standards Track [Page 38] + +RFC 3720 iSCSI April 2004 + + + Both iSCSI Initiators and iSCSI Targets have portal groups, + though only the iSCSI Target Portal Groups are used directly + in the iSCSI protocol (e.g., in SendTargets). For references + to the initiator Portal Groups, see Section 9.1.1 Conservative + Reuse of ISIDs. + + f) Portals within a Portal Group should support similar session + parameters, because they may participate in a common session. + + The following diagram shows an example of one such configuration on a + target and how a session that shares Network Portals within a Portal + Group may be established. + + ----------------------------IP Network--------------------- + | | | + +----|---------------|-----+ +----|---------+ + | +---------+ +---------+ | | +---------+ | + | | Network | | Network | | | | Network | | + | | Portal | | Portal | | | | Portal | | + | +--|------+ +---------+ | | +---------+ | + | | | | | | | + | | Portal | | | | Portal | + | | Group 1 | | | | Group 2 | + +--------------------------+ +--------------+ + | | | + +--------|---------------|--------------------|--------------------+ + | | | | | + | +----------------------------+ +-----------------------------+ | + | | iSCSI Session (Target side)| | iSCSI Session (Target side) | | + | | | | | | + | | (TSIH = 56) | | (TSIH = 48) | | + | +----------------------------+ +-----------------------------+ | + | | + | iSCSI Target Node | + | (within Network Entity, not shown) | + +------------------------------------------------------------------+ + +3.4.2. SCSI Architecture Model + + This section describes the relationship between the SCSI Architecture + Model [SAM2] and the constructs of the SCSI device, SCSI port and I_T + nexus, and the iSCSI constructs described in Section 3.4.1 iSCSI + Architecture Model. + + This relationship implies implementation requirements in order to + conform to the SAM2 model and other SCSI operational functions. + These requirements are detailed in Section 3.4.3 Consequences of the + Model. + + + +Satran, et al. Standards Track [Page 39] + +RFC 3720 iSCSI April 2004 + + + The following list outlines mappings of SCSI architectural elements + to iSCSI. + + a) SCSI Device - the SAM2 term for an entity that contains one or + more SCSI ports that are connected to a service delivery + subsystem and supports a SCSI application protocol. For + example, a SCSI Initiator Device contains one or more SCSI + Initiator Ports and zero or more application clients. A SCSI + Target Device contains one or more SCSI Target Ports and one + or more logical units. For iSCSI, the SCSI Device is the + component within an iSCSI Node that provides the SCSI + functionality. As such, there can be one SCSI Device, at + most, within an iSCSI Node. Access to the SCSI Device can + only be achieved in an iSCSI normal operational session (see + Section 3.3 iSCSI Session Types). The SCSI Device Name is + defined to be the iSCSI Name of the node and MUST be used in + the iSCSI protocol. + + b) SCSI Port - the SAM2 term for an entity in a SCSI Device that + provides the SCSI functionality to interface with a service + delivery subsystem or transport. For iSCSI, the definition of + SCSI Initiator Port and SCSI Target Port are different. + + SCSI Initiator Port: This maps to one endpoint of an iSCSI + normal operational session (see Section 3.3 iSCSI Session + Types). An iSCSI normal operational session is negotiated + through the login process between an iSCSI initiator node and + an iSCSI target node. At successful completion of this + process, a SCSI Initiator Port is created within the SCSI + Initiator Device. The SCSI Initiator Port Name and SCSI + Initiator Port Identifier are both defined to be the iSCSI + Initiator Name together with (a) a label that identifies it as + an initiator port name/identifier and (b) the ISID portion of + the session identifier. + + SCSI Target Port: This maps to an iSCSI Target Portal Group. + The SCSI Target Port Name and the SCSI Target Port Identifier + are both defined to be the iSCSI Target Name together with (a) + a label that identifies it as a target port name/identifier + and (b) the portal group tag. + + The SCSI Port Name MUST be used in iSCSI. When used in SCSI + parameter data, the SCSI port name MUST be encoded as: + - The iSCSI Name in UTF-8 format, followed by + - a comma separator (1 byte), followed by + - the ASCII character 'i' (for SCSI Initiator Port) or the + ASCII character 't' (for SCSI Target Port) (1 byte), + followed by + + + +Satran, et al. Standards Track [Page 40] + +RFC 3720 iSCSI April 2004 + + + - a comma separator (1 byte), followed by + - a text encoding as a hex-constant (see Section 5.1 Text + Format) of the ISID (for SCSI initiator port) or the portal + group tag (for SCSI target port) including the initial 0X + or 0x and the terminating null (15 bytes). + + The ASCII character 'i' or 't' is the label that identifies + this port as either a SCSI Initiator Port or a SCSI Target + Port. + + c) I_T nexus - a relationship between a SCSI Initiator Port and a + SCSI Target Port, according to [SAM2]. For iSCSI, this + relationship is a session, defined as a relationship between + an iSCSI Initiator's end of the session (SCSI Initiator Port) + and the iSCSI Target's Portal Group. The I_T nexus can be + identified by the conjunction of the SCSI port names or by the + iSCSI session identifier SSID. iSCSI defines the I_T nexus + identifier to be the tuple (iSCSI Initiator Name + 'i' + ISID, + iSCSI Target Name + 't' + Portal Group Tag). + + NOTE: The I_T nexus identifier is not equal to the session + identifier (SSID). + +3.4.3. Consequences of the Model + + This section describes implementation and behavioral requirements + that result from the mapping of SCSI constructs to the iSCSI + constructs defined above. Between a given SCSI initiator port and a + given SCSI target port, only one I_T nexus (session) can exist. No + more than one nexus relationship (parallel nexus) is allowed by + [SAM2]. Therefore, at any given time, only one session can exist + between a given iSCSI initiator node and an iSCSI target node, with + the same session identifier (SSID). + + These assumptions lead to the following conclusions and requirements: + + ISID RULE: Between a given iSCSI Initiator and iSCSI Target Portal + Group (SCSI target port), there can only be one session with a given + value for ISID that identifies the SCSI initiator port. See Section + 10.12.5 ISID. + + The structure of the ISID that contains a naming authority component + (see Section 10.12.5 ISID and [RFC3721]) provides a mechanism to + facilitate compliance with the ISID rule. (See Section 9.1.1 + Conservative Reuse of ISIDs.) + + + + + + +Satran, et al. Standards Track [Page 41] + +RFC 3720 iSCSI April 2004 + + + The iSCSI Initiator Node should manage the assignment of ISIDs prior + to session initiation. The "ISID RULE" does not preclude the use of + the same ISID from the same iSCSI Initiator with different Target + Portal Groups on the same iSCSI target or on other iSCSI targets (see + Section 9.1.1 Conservative Reuse of ISIDs). Allowing this would be + analogous to a single SCSI Initiator Port having relationships + (nexus) with multiple SCSI target ports on the same SCSI target + device or SCSI target ports on other SCSI target devices. It is also + possible to have multiple sessions with different ISIDs to the same + Target Portal Group. Each such session would be considered to be + with a different initiator even when the sessions originate from the + same initiator device. The same ISID may be used by a different + iSCSI initiator because it is the iSCSI Name together with the ISID + that identifies the SCSI Initiator Port. + + NOTE: A consequence of the ISID RULE and the specification for the + I_T nexus identifier is that two nexus with the same identifier + should never exist at the same time. + + TSIH RULE: The iSCSI Target selects a non-zero value for the TSIH at + session creation (when an initiator presents a 0 value at Login). + After being selected, the same TSIH value MUST be used whenever the + initiator or target refers to the session and a TSIH is required. + +3.4.3.1. I_T Nexus State + + Certain nexus relationships contain an explicit state (e.g., + initiator-specific mode pages) that may need to be preserved by the + device server [SAM2] in a logical unit through changes or failures in + the iSCSI layer (e.g., session failures). In order for that state to + be restored, the iSCSI initiator should reestablish its session + (re-login) to the same Target Portal Group using the previous ISID. + That is, it should perform session recovery as described in Chapter + 6. This is because the SCSI initiator port identifier and the SCSI + target port identifier (or relative target port) form the datum that + the SCSI logical unit device server uses to identify the I_T nexus. + +3.5. Request/Response Summary + + This section lists and briefly describes all the iSCSI PDU types + (request and responses). + + All iSCSI PDUs are built as a set of one or more header segments + (basic and auxiliary) and zero or one data segments. The header + group and the data segment may each be followed by a CRC (digest). + + The basic header segment has a fixed length of 48 bytes. + + + + +Satran, et al. Standards Track [Page 42] + +RFC 3720 iSCSI April 2004 + + +3.5.1. Request/Response Types Carrying SCSI Payload + +3.5.1.1. SCSI-Command + + This request carries the SCSI CDB and all the other SCSI execute + command procedure call (see [SAM2]) IN arguments such as task + attributes, Expected Data Transfer Length for one or both transfer + directions (the latter for bidirectional commands), and Task Tag (as + part of the I_T_L_x nexus). The I_T_L nexus is derived by the + initiator and target from the LUN field in the request and the I_T + nexus is implicit in the session identification. + + In addition, the SCSI-command PDU carries information required for + the proper operation of the iSCSI protocol - the command sequence + number (CmdSN) for the session and the expected status number + (ExpStatSN) for the connection. + + All or part of the SCSI output (write) data associated with the SCSI + command may be sent as part of the SCSI-Command PDU as a data + segment. + +3.5.1.2. SCSI-Response + + The SCSI-Response carries all the SCSI execute-command procedure call + (see [SAM2]) OUT arguments and the SCSI execute-command procedure + call return value. + + The SCSI-Response contains the residual counts from the operation, if + any, an indication of whether the counts represent an overflow or an + underflow, and the SCSI status if the status is valid or a response + code (a non-zero return value for the execute-command procedure call) + if the status is not valid. + + For a valid status that indicates that the command has been + processed, but resulted in an exception (e.g., a SCSI CHECK + CONDITION), the PDU data segment contains the associated sense data. + The use of Autosense ([SAM2]) is REQUIRED by iSCSI. + + Some data segment content may also be associated (in the data + segment) with a non-zero response code. + + In addition, the SCSI-Response PDU carries information required for + the proper operation of the iSCSI protocol: + + - The number of Data-In PDUs that a target has sent (to enable + the initiator to check that all have arrived). + - StatSN - the Status Sequence Number on this connection. + + + + +Satran, et al. Standards Track [Page 43] + +RFC 3720 iSCSI April 2004 + + + - ExpCmdSN - the next Expected Command Sequence Number at the + target. + - MaxCmdSN - the maximum CmdSN acceptable at the target from + this initiator. + +3.5.1.3 Task Management Function Request + + The Task Management function request provides an initiator with a way + to explicitly control the execution of one or more SCSI Tasks or + iSCSI functions. The PDU carries a function identifier (which task + management function to perform) and enough information to + unequivocally identify the task or task-set on which to perform the + action, even if the task(s) to act upon has not yet arrived or has + been discarded due to an error. + + The referenced tag identifies an individual task if the function + refers to an individual task. + + The I_T_L nexus identifies task sets. In iSCSI the I_T_L nexus is + identified by the LUN and the session identification (the session + identifies an I_T nexus). + + For task sets, the CmdSN of the Task Management function request + helps identify the tasks upon which to act, namely all tasks + associated with a LUN and having a CmdSN preceding the Task + Management function request CmdSN. + + For a Task Management function, the coordination between responses to + the tasks affected and the Task Management function response is done + by the target. + +3.5.1.4. Task Management Function Response + + The Task Management function response carries an indication of + function completion for a Task Management function request including + how it was completed (response and qualifier) and additional + information for failure responses. + + After the Task Management response indicates Task Management function + completion, the initiator will not receive any additional responses + from the affected tasks. + +3.5.1.5. SCSI Data-Out and SCSI Data-In + + SCSI Data-Out and SCSI Data-In are the main vehicles by which SCSI + data payload is carried between initiator and target. Data payload + is associated with a specific SCSI command through the Initiator Task + Tag. For target convenience, outgoing solicited data also carries a + + + +Satran, et al. Standards Track [Page 44] + +RFC 3720 iSCSI April 2004 + + + Target Transfer Tag (copied from R2T) and the LUN. Each PDU contains + the payload length and the data offset relative to the buffer address + contained in the SCSI execute command procedure call. + + In each direction, the data transfer is split into "sequences". An + end-of-sequence is indicated by the F bit. + + An outgoing sequence is either unsolicited (only the first sequence + can be unsolicited) or consists of all the Data-Out PDUs sent in + response to an R2T. + + Input sequences are built to enable the direction switching for + bidirectional commands. + + For input, the target may request positive acknowledgement of input + data. This is limited to sessions that support error recovery and is + implemented through the A bit in the SCSI Data-In PDU header. + + Data-In and Data-Out PDUs also carry the DataSN to enable the + initiator and target to detect missing PDUs (discarded due to an + error). + + In addition, StatSN is carried by the Data-In PDUs. + + To enable a SCSI command to be processed while involving a minimum + number of messages, the last SCSI Data-In PDU passed for a command + may also contain the status if the status indicates termination with + no exceptions (no sense or response involved). + +3.5.1.6. Ready To Transfer (R2T) + + R2T is the mechanism by which the SCSI target "requests" the + initiator for output data. R2T specifies to the initiator the offset + of the requested data relative to the buffer address from the execute + command procedure call and the length of the solicited data. + + To help the SCSI target associate the resulting Data-Out with an R2T, + the R2T carries a Target Transfer Tag that will be copied by the + initiator in the solicited SCSI Data-Out PDUs. There are no protocol + specific requirements with regard to the value of these tags, but it + is assumed that together with the LUN, they will enable the target to + associate data with an R2T. + + + + + + + + + +Satran, et al. Standards Track [Page 45] + +RFC 3720 iSCSI April 2004 + + + R2T also carries information required for proper operation of the + iSCSI protocol, such as: + + - R2TSN (to enable an initiator to detect a missing R2T) + - StatSN + - ExpCmdSN + - MaxCmdSN + +3.5.2. Requests/Responses carrying SCSI and iSCSI Payload + +3.5.2.1. Asynchronous Message + + Asynchronous Messages are used to carry SCSI asynchronous events + (AEN) and iSCSI asynchronous messages. + + When carrying an AEN, the event details are reported as sense data in + the data segment. + +3.5.3. Requests/Responses Carrying iSCSI Only Payload + +3.5.3.1. Text Request and Text Response + + Text requests and responses are designed as a parameter negotiation + vehicle and as a vehicle for future extension. + + In the data segment, Text Requests/Responses carry text information + using a simple "key=value" syntax. + + Text Request/Responses may form extended sequences using the same + Initiator Task Tag. The initiator uses the F (Final) flag bit in the + text request header to indicate its readiness to terminate a + sequence. The target uses the F (Final) flag bit in the text + response header to indicate its consent to sequence termination. + + Text Request and Responses also use the Target Transfer Tag to + indicate continuation of an operation or a new beginning. A target + that wishes to continue an operation will set the Target Transfer Tag + in a Text Response to a value different from the default 0xffffffff. + An initiator willing to continue will copy this value into the Target + Transfer Tag of the next Text Request. If the initiator wants to + restart the current target negotiation (start fresh) will set the + Target Transfer Tag to 0xffffffff. + + Although a complete exchange is always started by the initiator, + specific parameter negotiations may be initiated by the initiator or + target. + + + + + +Satran, et al. Standards Track [Page 46] + +RFC 3720 iSCSI April 2004 + + +3.5.3.2. Login Request and Login Response + + Login Requests and Responses are used exclusively during the Login + Phase of each connection to set up the session and connection + parameters. (The Login Phase consists of a sequence of login + requests and responses carrying the same Initiator Task Tag.) + + A connection is identified by an arbitrarily selected connection-ID + (CID) that is unique within a session. + + Similar to the Text Requests and Responses, Login Requests/Responses + carry key=value text information with a simple syntax in the data + segment. + + The Login Phase proceeds through several stages (security + negotiation, operational parameter negotiation) that are selected + with two binary coded fields in the header -- the "current stage" + (CSG) and the "next stage" (NSG) with the appearance of the latter + being signaled by the "transit" flag (T). + + The first Login Phase of a session plays a special role, called the + leading login, which determines some header fields (e.g., the version + number, the maximum number of connections, and the session + identification). + + The CmdSN initial value is also set by the leading login. + + StatSN for each connection is initiated by the connection login. + + A login request may indicate an implied logout (cleanup) of the + connection to be logged in (a connection restart) by using the same + Connection ID (CID) as an existing connection, as well as the same + session identifying elements of the session to which the old + connection was associated. + +3.5.3.3. Logout Request and Response + + Logout Requests and Responses are used for the orderly closing of + connections for recovery or maintenance. The logout request may be + issued following a target prompt (through an asynchronous message) or + at an initiators initiative. When issued on the connection to be + logged out, no other request may follow it. + + The Logout Response indicates that the connection or session cleanup + is completed and no other responses will arrive on the connection (if + received on the logging out connection). In addition, the Logout + Response indicates how long the target will continue to hold + resources for recovery (e.g., command execution that continues on a + + + +Satran, et al. Standards Track [Page 47] + +RFC 3720 iSCSI April 2004 + + + new connection) in the text key Time2Retain and how long the + initiator must wait before proceeding with recovery in the text key + Time2Wait. + +3.5.3.4. SNACK Request + + With the SNACK Request, the initiator requests retransmission of + numbered-responses or data from the target. A single SNACK request + covers a contiguous set of missing items, called a run, of a given + type of items. The type is indicated in a type field in the PDU + header. The run is composed of an initial item (StatSN, DataSN, + R2TSN) and the number of missed Status, Data, or R2T PDUs. For long + Data-In sequences, the target may request (at predefined minimum + intervals) a positive acknowledgement for the data sent. A SNACK + request with a type field that indicates ACK and the number of + Data-In PDUs acknowledged conveys this positive acknowledgement. + +3.5.3.5. Reject + + Reject enables the target to report an iSCSI error condition (e.g., + protocol, unsupported option) that uses a Reason field in the PDU + header and includes the complete header of the bad PDU in the Reject + PDU data segment. + +3.5.3.6. NOP-Out Request and NOP-In Response + + This request/response pair may be used by an initiator and target as + a "ping" mechanism to verify that a connection/session is still + active and all of its components are operational. Such a ping may be + triggered by the initiator or target. The triggering party indicates + that it wants a reply by setting a value different from the default + 0xffffffff in the corresponding Initiator/Target Transfer Tag. + + NOP-In/NOP-Out may also be used "unidirectional" to convey to the + initiator/target command, status or data counter values when there is + no other "carrier" and there is a need to update the initiator/ + target. + +4. SCSI Mode Parameters for iSCSI + + There are no iSCSI specific mode pages. + +5. Login and Full Feature Phase Negotiation + + iSCSI parameters are negotiated at session or connection + establishment by using Login Requests and Responses (see Section + 3.2.3 iSCSI Login) and during the Full Feature Phase (Section 3.2.4 + iSCSI Full Feature Phase) by using Text Requests and Responses. In + + + +Satran, et al. Standards Track [Page 48] + +RFC 3720 iSCSI April 2004 + + + both cases the mechanism used is an exchange of iSCSI-text-key=value + pairs. For brevity iSCSI-text-keys are called just keys in the rest + of this document. + + Keys are either declarative or require negotiation and the key + description indicates if the key is declarative or requires + negotiation. + + For the declarative keys, the declaring party sets a value for the + key. The key specification indicates if the key can be declared by + the initiator, target or both. + + For the keys that require negotiation one of the parties (the + proposing party) proposes a value or set of values by including the + key=value in the data part of a Login or Text Request or Response + PDUs. The other party (the accepting party) makes a selection based + on the value or list of values proposed and includes the selected + value in a key=value in the data part of one of the following Login + or Text Response or Request PDUs. For most of the keys both the + initiator and target can be proposing parties. + + The login process proceeds in two stages - the security negotiation + stage and the operational parameter negotiation stage. Both stages + are optional but at least one of them has to be present to enable the + setting of some mandatory parameters. + + If present, the security negotiation stage precedes the operational + parameter negotiation stage. + + Progression from stage to stage is controlled by the T (Transition) + bit in the Login Request/Response PDU header. Through the T bit set + to 1, the initiator indicates that it would like to transition. The + target agrees to the transition (and selects the next stage) when + ready. A field in the Login PDU header indicates the current stage + (CSG) and during transition, another field indicates the next stage + (NSG) proposed (initiator) and selected (target). + + The text negotiation process is used to negotiate or declare + operational parameters. The negotiation process is controlled by the + F (final) bit in the PDU header. During text negotiations, the F bit + is used by the initiator to indicate that it is ready to finish the + negotiation and by the Target to acquiesce the end of negotiation. + + Since some key=value pairs may not fit entirely in a single PDU, the + C (continuation) bit is used (both in Login and Text) to indicate + that "more follows". + + + + + +Satran, et al. Standards Track [Page 49] + +RFC 3720 iSCSI April 2004 + + + The text negotiation uses an additional mechanism by which a target + may deliver larger amounts of data to an enquiring initiator. The + target sets a Target Task Tag to be used as a bookmark that when + returned by the initiator, means "go on". If reset to a "neutral + value", it means "forget about the rest". + + This chapter details types of keys and values used, the syntax rules + for parameter formation, and the negotiation schemes to be used with + different types of parameters. + +5.1. Text Format + + The initiator and target send a set of key=value pairs encoded in + UTF-8 Unicode. All the text keys and text values specified in this + document are to be presented and interpreted in the case in which + they appear in this document. They are case sensitive. + + The following character symbols are used in this document for text + items (the hexadecimal values represent Unicode code points): + + (a-z, A-Z) - letters + (0-9) - digits + " " (0x20) - space + "." (0x2e) - dot + "-" (0x2d) - minus + "+" (0x2b) - plus + "@" (0x40) - commercial at + "_" (0x5f) - underscore + "=" (0x3d) - equal + ":" (0x3a) - colon + "/" (0x2f) - solidus or slash + "[" (0x5b) - left bracket + "]" (0x5d) - right bracket + null (0x00) - null separator + "," (0x2c) - comma + "~" (0x7e) - tilde + + Key=value pairs may span PDU boundaries. An initiator or target that + sends partial key=value text within a PDU indicates that more text + follows by setting the C bit in the Text or Login Request or Text or + Login Response to 1. Data segments in a series of PDUs that have the + C bit set to 1 and end with a PDU that have the C bit set to 0, or + include a single PDU that has the C bit set to 0, have to be + considered as forming a single logical-text-data-segment (LTDS). + + Every key=value pair, including the last or only pair in a LTDS, MUST + be followed by one null (0x00) delimiter. + + + + +Satran, et al. Standards Track [Page 50] + +RFC 3720 iSCSI April 2004 + + + A key-name is whatever precedes the first "=" in the key=value pair. + The term key is used frequently in this document in place of + key-name. + + A value is whatever follows the first "=" in the key=value pair up to + the end of the key=value pair, but not including the null delimiter. + + The following definitions will be used in the rest of this document: + + standard-label: A string of one or more characters that consist of + letters, digits, dot, minus, plus, commercial at, or underscore. + A standard-label MUST begin with a capital letter and must not + exceed 63 characters. + + key-name: A standard-label. + + text-value: A string of zero or more characters that consist of + letters, digits, dot, minus, plus, commercial at, underscore, + slash, left bracket, right bracket, or colon. + + iSCSI-name-value: A string of one or more characters that consist + of minus, dot, colon, or any character allowed by the output of + the iSCSI string-prep template as specified in [RFC3722] (see + also Section 3.2.6.2 iSCSI Name Encoding). + + iSCSI-local-name-value: A UTF-8 string; no null characters are + allowed in the string. This encoding is to be used for localized + (internationalized) aliases. + + boolean-value: The string "Yes" or "No". + + hex-constant: A hexadecimal constant encoded as a string that + starts with "0x" or "0X" followed by one or more digits or the + letters a, b, c, d, e, f, A, B, C, D, E, or F. Hex-constants are + used to encode numerical values or binary strings. When used to + encode numerical values, the excessive use of leading 0 digits is + discouraged. The string following 0X (or 0x) represents a base16 + number that starts with the most significant base16 digit, + followed by all other digits in decreasing order of significance + and ending with the least-significant base16 digit. When used to + encode binary strings, hexadecimal constants have an implicit + byte-length that includes four bits for every hexadecimal digit + of the constant, including leading zeroes. For example, a + hex-constant of n hexadecimal digits has a byte-length of (the + integer part of) (n+1)/2. + + + + + + +Satran, et al. Standards Track [Page 51] + +RFC 3720 iSCSI April 2004 + + + decimal-constant: An unsigned decimal number with the digit 0 or a + string of one or more digits that start with a non-zero digit. + Decimal-constants are used to encode numerical values or binary + strings. Decimal constants can only be used to encode binary + strings if the string length is explicitly specified. There is + no implicit length for decimal strings. Decimal-constant MUST + NOT be used for parameter values if the values can be equal or + greater than 2**64 (numerical) or for binary strings that can be + longer than 64 bits. + + base64-constant: base64 constant encoded as a string that starts + with "0b" or "0B" followed by 1 or more digits or letters or plus + or slash or equal. The encoding is done according to [RFC2045] + and each character, except equal, represents a base64 digit or a + 6-bit binary string. Base64-constants are used to encode + numerical-values or binary strings. When used to encode + numerical values, the excessive use of leading 0 digits (encoded + as A) is discouraged. The string following 0B (or 0b) represents + a base64 number that starts with the most significant base64 + digit, followed by all other digits in decreasing order of + significance and ending with the least-significant base64 digit; + the least significant base64 digit may be optionally followed by + pad digits (encoded as equal) that are not considered as part of + the number. When used to encode binary strings, base64-constants + have an implicit + byte-length that includes six bits for every character of the + constant, excluding trailing equals (i.e., a base64-constant of n + base64 characters excluding the trailing equals has a byte-length + of ((the integer part of) (n*3/4)). Correctly encoded base64 + strings cannot have n values of 1, 5 ... k*4+1. + + numerical-value: An unsigned integer always less than 2**64 encoded + as a decimal-constant or a hex-constant. Unsigned integer + arithmetic applies to numerical-values. + + large-numerical-value: An unsigned integer that can be larger than + or equal to 2**64 encoded as a hex constant, or + base64-constant. Unsigned integer arithmetic applies to + large-numeric-values. + + numeric-range: Two numerical-values separated by a tilde where the + value to the right of tilde must not be lower than the value to + the left. + + regular-binary-value: A binary string not longer than 64 bits + encoded as a decimal constant, hex constant, or base64-constant. + The length of the string is either specified by the key + definition or is the implicit byte-length of the encoded string. + + + +Satran, et al. Standards Track [Page 52] + +RFC 3720 iSCSI April 2004 + + + large-binary-value: A binary string longer than 64 bits encoded as + a hex-constant or base64-constant. The length of the string is + either specified by the key definition or is the implicit + byte-length of the encoded string. + + binary-value: A regular-binary-value or a large-binary-value. + Operations on binary values are key specific. + + simple-value: Text-value, iSCSI-name-value, boolean-value, + numeric-value, a numeric-range, or a binary-value. + + list-of-values: A sequence of text-values separated by a comma. + + If not otherwise specified, the maximum length of a simple-value (not + its encoded representation) is 255 bytes, not including the delimiter + (comma or zero byte). + + Any iSCSI target or initiator MUST support receiving at least 8192 + bytes of key=value data in a negotiation sequence. When proposing or + accepting authentication methods that explicitly require support for + very long authentication items, the initiator and target MUST support + receiving of at least 64 kilobytes of key=value data (see Appendix + 11.1.2 - Simple Public-Key Mechanism (SPKM) - that require support + for public key certificates). + +5.2. Text Mode Negotiation + + During login, and thereafter, some session or connection parameters + are either declared or negotiated through an exchange of textual + information. + + The initiator starts the negotiation and/or declaration through a + Text or Login Request and indicates when it is ready for completion + (by setting the F bit to 1 and keeping it to 1 in a Text Request or + the T bit in the Login Request). As negotiation text may span PDU + boundaries, a Text or Login Request or Text or Login Response PDU + that has the C bit set to 1 MUST NOT have the F/T bit set to 1. + + A target receiving a Text or Login Request with the C bit set to 1 + MUST answer with a Text or Login Response with no data segment + (DataSegmentLength 0). An initiator receiving a Text or Login + Response with the C bit set to 1 MUST answer with a Text or Login + Request with no data segment (DataSegmentLength 0). + + A target or initiator SHOULD NOT use a Text or Login Response or Text + or Login Request with no data segment (DataSegmentLength 0) unless + explicitly required by a general or a key-specific negotiation rule. + + + + +Satran, et al. Standards Track [Page 53] + +RFC 3720 iSCSI April 2004 + + + The format of a declaration is: + + Declarer-> = + + The general format of text negotiation is: + + Proposer-> = + Acceptor-> ={|NotUnderstood|Irrelevant|Reject} + + Thus a declaration is a one-way textual exchange while a negotiation + is a two-way exchange. + + The proposer or declarer can either be the initiator or the target, + and the acceptor can either be the target or initiator, respectively. + Targets are not limited to respond to key=value pairs as proposed by + the initiator. The target may propose key=value pairs of its own. + + All negotiations are explicit (i.e., the result MUST only be based on + newly exchanged or declared values). There are no implicit + proposals. If a proposal is not made, then a reply cannot be + expected. Conservative design also requires that default values + should not be relied upon when use of some other value has serious + consequences. + + The value proposed or declared can be a numerical-value, a + numerical-range defined by lower and upper values with both integers + separated by a tilde, a binary value, a text-value, an + iSCSI-name-value, an iSCSI-local-name-value, a boolean-value (Yes or + No), or a list of comma separated text-values. A range, a + large-numerical-value, an iSCSI-name-value and an + iSCSI-local-name-value MAY ONLY be used if it is explicitly allowed. + An accepted value can be a numerical-value, a large-numerical-value, + a text-value, or a boolean-value. + + If a specific key is not relevant for the current negotiation, the + acceptor may answer with the constant "Irrelevant" for all types of + negotiation. However the negotiation is not considered as failed if + the answer is "Irrelevant". The "Irrelevant" answer is meant for + those cases in which several keys are presented by a proposing party + but the selection made by the acceptor for one of the keys makes + other keys irrelevant. The following example illustrates the use of + "Irrelevant": + + I->T OFMarker=Yes,OFMarkInt=2048~8192 + T->I OFMarker=No,OFMarkInt=Irrelevant + + I->T X#vkey1=(bla,alb,None),X#vkey2=(bla,alb) + T->I X#vkey1=None,X#vkey2=Irrelevant + + + +Satran, et al. Standards Track [Page 54] + +RFC 3720 iSCSI April 2004 + + + + Any key not understood by the acceptor may be ignored by the acceptor + without affecting the basic function. However, the answer for a key + not understood MUST be key=NotUnderstood. + + The constants "None", "Reject", "Irrelevant", and "NotUnderstood" are + reserved and MUST ONLY be used as described here. Violation of this + rule is a protocol error (in particular the use of "Reject", + "Irrelevant", and "NotUnderstood" as proposed values). + + Reject or Irrelevant are legitimate negotiation options where allowed + but their excessive use is discouraged. A negotiation is considered + complete when the acceptor has sent the key value pair even if the + value is "Reject", "Irrelevant", or "NotUnderstood. Sending the key + again would be a re-negotiation and is forbidden for many keys. + + If the acceptor sends "Reject" as an answer the negotiated key is + left at its current value (or default if no value was set). If the + current value is not acceptable to the proposer on the connection or + to the session it is sent, the proposer MAY choose to terminate the + connection or session. + + All keys in this document, except for the X extension formats, MUST + be supported by iSCSI initiators and targets when used as specified + here. If used as specified, these keys MUST NOT be answered with + NotUnderstood. + + Implementers may introduce new keys by prefixing them with + "X-", followed by their (reversed) domain name, or with new keys + registered with IANA prefixing them with X#. For example, the entity + owning the domain example.com can issue: + + X-com.example.bar.foo.do_something=3 + + or a new registered key may be used as in: + + X#SuperCalyPhraGilistic=Yes + + Implementers MAY also introduce new values, but ONLY for new keys or + authentication methods (see Section 11 iSCSI Security Text Keys and + Authentication Methods), or digests (see Section 12.1 HeaderDigest + and DataDigest). + + Whenever parameter action or acceptance is dependent on other + parameters, the dependency rules and parameter sequence must be + specified with the parameters. + + + + + +Satran, et al. Standards Track [Page 55] + +RFC 3720 iSCSI April 2004 + + + In the Login Phase (see Section 5.3 Login Phase), every stage is a + separate negotiation. In the FullFeaturePhase, a Text Request + Response sequence is a negotiation. Negotiations MUST be handled as + atomic operations. For example, all negotiated values go into effect + after the negotiation concludes in agreement or are ignored if the + negotiation fails. + + Some parameters may be subject to integrity rules (e.g., parameter-x + must not exceed parameter-y or parameter-u not 1 implies parameter-v + be Yes). Whenever required, integrity rules are specified with the + keys. Checking for compliance with the integrity rule must only be + performed after all the parameters are available (the existent and + the newly negotiated). An iSCSI target MUST perform integrity + checking before the new parameters take effect. An initiator MAY + perform integrity checking. + + An iSCSI initiator or target MAY terminate a negotiation that does + not end within a reasonable time or number of exchanges. + +5.2.1. List negotiations + + In list negotiation, the originator sends a list of values (which may + include "None") in its order of preference. + + The responding party MUST respond with the same key and the first + value that it supports (and is allowed to use for the specific + originator) selected from the originator list. + + The constant "None" MUST always be used to indicate a missing + function. However, "None" is only a valid selection if it is + explicitly proposed. + + If an acceptor does not understand any particular value in a list, it + MUST ignore it. If an acceptor does not support, does not + understand, or is not allowed to use any of the proposed options with + a specific originator, it may use the constant "Reject" or terminate + the negotiation. The selection of a value not proposed MUST be + handled as a protocol error. + +5.2.2. Simple-value Negotiations + + For simple-value negotiations, the accepting party MUST answer with + the same key. The value it selects becomes the negotiation result. + + Proposing a value not admissible (e.g., not within the specified + bounds) MAY be answered with the constant "Reject" or the acceptor + MAY select an admissible value. + + + + +Satran, et al. Standards Track [Page 56] + +RFC 3720 iSCSI April 2004 + + + The selection by the acceptor, of a value not admissible under the + selection rules is considered a protocol error. The selection rules + are key-specific. + + For a numerical range, the value selected must be an integer within + the proposed range or "Reject" (if the range is unacceptable). + + In Boolean negotiations (i.e., those that result in keys taking the + values Yes or No), the accepting party MUST answer with the same key + and the result of the negotiation when the received value does not + determine that result by itself. The last value transmitted becomes + the negotiation result. The rules for selecting the value to answer + with are expressed as Boolean functions of the value received, and + the value that the accepting party would have selected if given a + choice. + + Specifically, the two cases in which answers are OPTIONAL are: + + - The Boolean function is "AND" and the value "No" is received. + The outcome of the negotiation is "No". + - The Boolean function is "OR" and the value "Yes" is received. + The outcome of the negotiation is "Yes". + + Responses are REQUIRED in all other cases, and the value chosen and + sent by the acceptor becomes the outcome of the negotiation. + +5.3. Login Phase + + The Login Phase establishes an iSCSI connection between an initiator + and a target; it also creates a new session or associates the + connection to an existing session. The Login Phase sets the iSCSI + protocol parameters, security parameters, and authenticates the + initiator and target to each other. + + The Login Phase is only implemented via Login Request and Responses. + The whole Login Phase is considered as a single task and has a single + Initiator Task Tag (similar to the linked SCSI commands). + + The default MaxRecvDataSegmentLength is used during Login. + + The Login Phase sequence of requests and responses proceeds as + follows: + + - Login initial request + - Login partial response (optional) + - More Login Requests and Responses (optional) + - Login Final-Response (mandatory) + + + + +Satran, et al. Standards Track [Page 57] + +RFC 3720 iSCSI April 2004 + + + The initial Login Request of any connection MUST include the + InitiatorName key=value pair. The initial Login Request of the first + connection of a session MAY also include the SessionType key=value + pair. For any connection within a session whose type is not + "Discovery", the first Login Request MUST also include the TargetName + key=value pair. + + The Login Final-response accepts or rejects the Login Request. + + The Login Phase MAY include a SecurityNegotiation stage and a + LoginOperationalNegotiation stage or both, but MUST include at least + one of them. The included stage MAY be empty except for the + mandatory names. + + The Login Requests and Responses contain a field (CSG) that indicates + the current negotiation stage (SecurityNegotiation or + LoginOperationalNegotiation). If both stages are used, the + SecurityNegotiation MUST precede the LoginOperationalNegotiation. + + Some operational parameters can be negotiated outside the login + through Text Requests and Responses. + + Security MUST be completely negotiated within the Login Phase. The + use of underlying IPsec security is specified in Chapter 8 and in + [RFC3723]. iSCSI support for security within the protocol only + consists of authentication in the Login Phase. + + In some environments, a target or an initiator is not interested in + authenticating its counterpart. It is possible to bypass + authentication through the Login Request and Response. + + The initiator and target MAY want to negotiate iSCSI authentication + parameters. Once this negotiation is completed, the channel is + considered secure. + + Most of the negotiation keys are only allowed in a specific stage. + The SecurityNegotiation keys appear in Chapter 11 and the + LoginOperationalNegotiation keys appear in Chapter 12. Only a + limited set of keys (marked as Any-Stage in Chapter 12) may be used + in any of the two stages. + + Any given Login Request or Response belongs to a specific stage; this + determines the negotiation keys allowed with the request or response. + It is considered to be a protocol error to send a key that is not + allowed in the current stage. + + + + + + +Satran, et al. Standards Track [Page 58] + +RFC 3720 iSCSI April 2004 + + + Stage transition is performed through a command exchange (request/ + response) that carries the T bit and the same CSG code. During this + exchange, the next stage is selected by the target through the "next + stage" code (NSG). The selected NSG MUST NOT exceed the value stated + by the initiator. The initiator can request a transition whenever it + is ready, but a target can only respond with a transition after one + is proposed by the initiator. + + In a negotiation sequence, the T bit settings in one pair of Login + Request-Responses have no bearing on the T bit settings of the next + pair. An initiator that has a T bit set to 1 in one pair and is + answered with a T bit setting of 0, may issue the next request with + the T bit set to 0. + + When a transition is requested by the initiator and acknowledged by + the target, both the initiator and target switch to the selected + stage. + + Targets MUST NOT submit parameters that require an additional + initiator Login Request in a Login Response with the T bit set to 1. + + Stage transitions during login (including entering and exit) are only + possible as outlined in the following table: + + +-----------------------------------------------------------+ + |From To -> | Security | Operational | FullFeature | + | | | | | | + | V | | | | + +-----------------------------------------------------------+ + | (start) | yes | yes | no | + +-----------------------------------------------------------+ + | Security | no | yes | yes | + +-----------------------------------------------------------+ + | Operational | no | no | yes | + +-----------------------------------------------------------+ + + The Login Final-Response that accepts a Login Request can only come + as a response to a Login Request with the T bit set to 1, and both + the request and response MUST indicate FullFeaturePhase as the next + phase via the NSG field. + + Neither the initiator nor the target should attempt to declare or + negotiate a parameter more than once during login except for + responses to specific keys that explicitly allow repeated key + declarations (e.g., TargetAddress). An attempt to + renegotiate/redeclare parameters not specifically allowed MUST be + detected by the initiator and target. If such an attempt is detected + + + + +Satran, et al. Standards Track [Page 59] + +RFC 3720 iSCSI April 2004 + + + by the target, the target MUST respond with Login reject (initiator + error); if detected by the initiator, the initiator MUST drop the + connection. + +5.3.1. Login Phase Start + + The Login Phase starts with a Login Request from the initiator to the + target. The initial Login Request includes: + + - Protocol version supported by the initiator. + - iSCSI Initiator Name and iSCSI Target Name + - ISID, TSIH, and connection Ids + - Negotiation stage that the initiator is ready to enter. + + A login may create a new session or it may add a connection to an + existing session. Between a given iSCSI Initiator Node (selected + only by an InitiatorName) and a given iSCSI target defined by an + iSCSI TargetName and a Target Portal Group Tag, the login results are + defined by the following table: + + + +------------------------------------------------------------------+ + |ISID | TSIH | CID | Target action | + +------------------------------------------------------------------+ + |new | non-zero | any | fail the login | + | | | | ("session does not exist") | + +------------------------------------------------------------------+ + |new | zero | any | instantiate a new session | + +------------------------------------------------------------------+ + |existing | zero | any | do session reinstatement | + | | | | (see section 5.3.5) | + +------------------------------------------------------------------+ + |existing | non-zero | new | add a new connection to | + | | existing | | the session | + +------------------------------------------------------------------+ + |existing | non-zero |existing| do connection reinstatement| + | | existing | | (see section 5.3.4) | + +------------------------------------------------------------------+ + |existing | non-zero | any | fail the login | + | | new | | ("session does not exist") | + +------------------------------------------------------------------+ + + Determination of "existing" or "new" are made by the target. + + + + + + + + +Satran, et al. Standards Track [Page 60] + +RFC 3720 iSCSI April 2004 + + + Optionally, the Login Request may include: + + - Security parameters + OR + - iSCSI operational parameters + AND/OR + - The next negotiation stage that the initiator is ready to + enter. + + The target can answer the login in the following ways: + + - Login Response with Login reject. This is an immediate rejection + from the target that causes the connection to terminate and the + session to terminate if this is the first (or only) connection of + a new session. The T bit and the CSG and NSG fields are + reserved. + - Login Response with Login Accept as a final response (T bit set + to 1 and the NSG in both request and response are set to + FullFeaturePhase). The response includes the protocol version + supported by the target and the session ID, and may include iSCSI + operational or security parameters (that depend on the current + stage). + - Login Response with Login Accept as a partial response (NSG not + set to FullFeaturePhase in both request and response) that + indicates the start of a negotiation sequence. The response + includes the protocol version supported by the target and either + security or iSCSI parameters (when no security mechanism is + chosen) supported by the target. + + If the initiator decides to forego the SecurityNegotiation stage, it + issues the Login with the CSG set to LoginOperationalNegotiation and + the target may reply with a Login Response that indicates that it is + unwilling to accept the connection (see Section 10.13 Login Response) + without SecurityNegotiation and will terminate the connection with a + response of Authentication failure (see Section 10.13.5 Status-Class + and Status-Detail). + + If the initiator is willing to negotiate iSCSI security, but is + unwilling to make the initial parameter proposal and may accept a + connection without iSCSI security, it issues the Login with the T bit + set to 1, the CSG set to SecurityNegotiation, and the NSG set to + LoginOperationalNegotiation. If the target is also ready to skip + security, the Login Response only contains the TargetPortalGroupTag + key (see Section 12.9 TargetPortalGroupTag), the T bit set to 1, the + CSG set to SecurityNegotiation, and the NSG set to + LoginOperationalNegotiation. + + + + + +Satran, et al. Standards Track [Page 61] + +RFC 3720 iSCSI April 2004 + + + An initiator that chooses to operate without iSCSI security, with all + the operational parameters taking the default values, issues the + Login with the T bit set to 1, the CSG set to + LoginOperationalNegotiation, and the NSG set to FullFeaturePhase. If + the target is also ready to forego security and can finish its + LoginOperationalNegotiation, the Login Response has T bit set to 1, + the CSG set to LoginOperationalNegotiation, and the NSG set to + FullFeaturePhase in the next stage. + + During the Login Phase the iSCSI target MUST return the + TargetPortalGroupTag key with the first Login Response PDU with which + it is allowed to do so (i.e., the first Login Response issued after + the first Login Request with the C bit set to 0) for all session + types when TargetName is given and the response is not a redirection. + The TargetPortalGroupTag key value indicates the iSCSI portal group + servicing the Login Request PDU. If the reconfiguration of iSCSI + portal groups is a concern in a given environment, the iSCSI + initiator should use this key to ascertain that it had indeed + initiated the Login Phase with the intended target portal group. + +5.3.2. iSCSI Security Negotiation + + The security exchange sets the security mechanism and authenticates + the initiator user and the target to each other. The exchange + proceeds according to the authentication method chosen in the + negotiation phase and is conducted using the Login Requests' and + responses' key=value parameters. + + An initiator directed negotiation proceeds as follows: + + - The initiator sends a Login Request with an ordered list of the + options it supports (authentication algorithm). The options are + listed in the initiator's order of preference. The initiator MAY + also send private or public extension options. + + - The target MUST reply with the first option in the list it + supports and is allowed to use for the specific initiator unless + it does not support any, in which case it MUST answer with + "Reject" (see Section 5.2 Text Mode Negotiation). The parameters + are encoded in UTF8 as key=value. For security parameters, see + Chapter 11. + + - When the initiator considers that it is ready to conclude the + SecurityNegotiation stage, it sets the T bit to 1 and the NSG to + what it would like the next stage to be. The target will then + set the T bit to 1 and set the NSG to the next stage in the Login + Response when it finishes sending its security keys. The next + + + + +Satran, et al. Standards Track [Page 62] + +RFC 3720 iSCSI April 2004 + + + stage selected will be the one the target selected. If the next + stage is FullFeaturePhase, the target MUST respond with a Login + Response with the TSIH value. + + If the security negotiation fails at the target, then the target MUST + send the appropriate Login Response PDU. If the security negotiation + fails at the initiator, the initiator SHOULD close the connection. + + It should be noted that the negotiation might also be directed by the + target if the initiator does support security, but is not ready to + direct the negotiation (propose options). + +5.3.3. Operational Parameter Negotiation During the Login Phase + + Operational parameter negotiation during the login MAY be done: + + - Starting with the first Login Request if the initiator does not + propose any security/integrity option. + + - Starting immediately after the security negotiation if the + initiator and target perform such a negotiation. + + Operational parameter negotiation MAY involve several Login + Request-Response exchanges started and terminated by the initiator. + The initiator MUST indicate its intent to terminate the negotiation + by setting the T bit to 1; the target sets the T bit to 1 on the last + response. + + If the target responds to a Login Request that has the T bit set to 1 + with a Login Response that has the T bit set to 0, the initiator + should keep sending the Login Request (even empty) with the T bit set + to 1, while it still wants to switch stage, until it receives the + Login Response that has the T bit set to 1 or it receives a key that + requires it to set the T bit to 0. + + Some session specific parameters can only be specified during the + Login Phase of the first connection of a session (i.e., begun by a + Login Request that contains a zero-valued TSIH) - the leading Login + Phase (e.g., the maximum number of connections that can be used for + this session). + + A session is operational once it has at least one connection in + FullFeaturePhase. New or replacement connections can only be added + to a session after the session is operational. + + For operational parameters, see Chapter 12. + + + + + +Satran, et al. Standards Track [Page 63] + +RFC 3720 iSCSI April 2004 + + +5.3.4. Connection Reinstatement + + Connection reinstatement is the process of an initiator logging in + with an ISID-TSIH-CID combination that is possibly active from the + target's perspective, which causes the implicit logging out of the + connection corresponding to the CID, and reinstating a new Full + Feature Phase iSCSI connection in its place (with the same CID). + Thus, the TSIH in the Login PDU MUST be non-zero and the CID does not + change during a connection reinstatement. The Login Request performs + the logout function of the old connection if an explicit logout was + not performed earlier. In sessions with a single connection, this + may imply the opening of a second connection with the sole purpose of + cleaning up the first. Targets MUST support opening a second + connection even when they do not support multiple connections in Full + Feature Phase if ErrorRecoveryLevel is 2 and SHOULD support opening a + second connection if ErrorRecoveryLevel is less than 2. + + If the operational ErrorRecoveryLevel is 2, connection reinstatement + enables future task reassignment. If the operational + ErrorRecoveryLevel is less than 2, connection reinstatement is the + replacement of the old CID without enabling task reassignment. In + this case, all the tasks that were active on the old CID must be + immediately terminated without further notice to the initiator. + + The initiator connection state MUST be CLEANUP_WAIT (section 7.1.3) + when the initiator attempts a connection reinstatement. + + In practical terms, in addition to the implicit logout of the old + connection, reinstatement is equivalent to a new connection login. + +5.3.5. Session Reinstatement, Closure, and Timeout + + Session reinstatement is the process of the initiator logging in with + an ISID that is possibly active from the target's perspective. Thus + implicitly logging out the session that corresponds to the ISID and + reinstating a new iSCSI session in its place (with the same ISID). + Therefore, the TSIH in the Login PDU MUST be zero to signal session + reinstatement. Session reinstatement causes all the tasks that were + active on the old session to be immediately terminated by the target + without further notice to the initiator. + + The initiator session state MUST be FAILED (Section 7.3 Session State + Diagrams) when the initiator attempts a session reinstatement. + + + + + + + + +Satran, et al. Standards Track [Page 64] + +RFC 3720 iSCSI April 2004 + + + Session closure is an event defined to be one of the following: + + - A successful "session close" logout. + - A successful "connection close" logout for the last Full Feature + Phase connection when no other connection in the session is + waiting for cleanup (Section 7.2 Connection Cleanup State Diagram + for Initiators and Targets) and no tasks in the session are + waiting for reassignment. + + Session timeout is an event defined to occur when the last connection + state timeout expires and no tasks are waiting for reassignment. + This takes the session to the FREE state (N6 transition in the + session state diagram). + +5.3.5.1. Loss of Nexus Notification + + The iSCSI layer provides the SCSI layer with the "I_T nexus loss" + notification when any one of the following events happens: + + a) Successful completion of session reinstatement. + b) Session closure event. + c) Session timeout event. + + Certain SCSI object clearing actions may result due to the + notification in the SCSI end nodes, as documented in Appendix F. + - Clearing Effects of Various Events on Targets -. + +5.3.6. Session Continuation and Failure + + Session continuation is the process by which the state of a + preexisting session continues to be used by connection reinstatement + (Section 5.3.4 Connection Reinstatement), or by adding a connection + with a new CID. Either of these actions associates the new transport + connection with the session state. + + Session failure is an event where the last Full Feature Phase + connection reaches the CLEANUP_WAIT state (Section 7.2 Connection + Cleanup State Diagram for Initiators and Targets), or completes a + successful recovery logout, thus causing all active tasks (that are + formerly allegiant to the connection) to start waiting for task + reassignment. + + + + + + + + + + +Satran, et al. Standards Track [Page 65] + +RFC 3720 iSCSI April 2004 + + +5.4. Operational Parameter Negotiation Outside the Login Phase + + Some operational parameters MAY be negotiated outside (after) the + Login Phase. + + Parameter negotiation in Full Feature Phase is done through Text + requests and responses. Operational parameter negotiation MAY + involve several Text request-response exchanges, which the initiator + always starts and terminates using the same Initiator Task Tag. The + initiator MUST indicate its intent to terminate the negotiation by + setting the F bit to 1; the target sets the F bit to 1 on the last + response. + + If the target responds to a Text request with the F bit set to 1 and + with a Text response with the F bit set to 0, the initiator should + keep sending the Text request (even empty) with the F bit set to 1, + while it still wants to finish the negotiation, until it receives the + Text response with the F bit set to 1. Responding to a Text request + with the F bit set to 1 with an empty (no key=value pairs) response + with the F bit set to 0 is discouraged. + + Targets MUST NOT submit parameters that require an additional + initiator Text request in a Text response with the F bit set to 1. + + In a negotiation sequence, the F bit settings in one pair of Text + request-responses have no bearing on the F bit settings of the next + pair. An initiator that has the F bit set to 1 in a request and is + being answered with an F bit setting of 0 may issue the next request + with the F bit set to 0. + + Whenever the target responds with the F bit set to 0, it MUST set the + Target Transfer Tag to a value other than the default 0xffffffff. + + An initiator MAY reset an operational parameter negotiation by + issuing a Text request with the Target Transfer Tag set to the value + 0xffffffff after receiving a response with the Target Transfer Tag + set to a value other than 0xffffffff. A target may reset an + operational parameter negotiation by answering a Text request with a + Reject PDU. + + Neither the initiator nor the target should attempt to declare or + negotiate a parameter more than once during any negotiation sequence + without an intervening operational parameter negotiation reset, + except for responses to specific keys that explicitly allow repeated + key declarations (e.g., TargetAddress). If detected by the target, + this MUST result in a Reject PDU with a reason of "protocol error". + The initiator MUST reset the negotiation as outlined above. + + + + +Satran, et al. Standards Track [Page 66] + +RFC 3720 iSCSI April 2004 + + + Parameters negotiated by a text exchange negotiation sequence only + become effective after the negotiation sequence is completed. + +6. iSCSI Error Handling and Recovery + +6.1. Overview + +6.1.1. Background + + The following two considerations prompted the design of much of the + error recovery functionality in iSCSI: + + i) An iSCSI PDU may fail the digest check and be dropped, despite + being received by the TCP layer. The iSCSI layer must + optionally be allowed to recover such dropped PDUs. + ii) A TCP connection may fail at any time during the data + transfer. All the active tasks must optionally be allowed to + continue on a different TCP connection within the same + session. + + Implementations have considerable flexibility in deciding what degree + of error recovery to support, when to use it and by which mechanisms + to achieve the required behavior. Only the externally visible + actions of the error recovery mechanisms must be standardized to + ensure interoperability. + + This chapter describes a general model for recovery in support of + interoperability. See Appendix E. - Algorithmic Presentation of + Error Recovery Classes - for further detail on how the described + model may be implemented. Compliant implementations do not have to + match the implementation details of this model as presented, but the + external behavior of such implementations must correspond to the + externally observable characteristics of the presented model. + +6.1.2. Goals + + The major design goals of the iSCSI error recovery scheme are as + follows: + + a) Allow iSCSI implementations to meet different requirements by + defining a collection of error recovery mechanisms that + implementations may choose from. + b) Ensure interoperability between any two implementations + supporting different sets of error recovery capabilities. + c) Define the error recovery mechanisms to ensure command + ordering even in the face of errors, for initiators that + demand ordering. + + + + +Satran, et al. Standards Track [Page 67] + +RFC 3720 iSCSI April 2004 + + + d) Do not make additions in the fast path, but allow moderate + complexity in the error recovery path. + e) Prevent both the initiator and target from attempting to + recover the same set of PDUs at the same time. For example, + there must be a clear "error recovery functionality + distribution" between the initiator and target. + +6.1.3. Protocol Features and State Expectations + + The initiator mechanisms defined in connection with error recovery + are: + + a) NOP-OUT to probe sequence numbers of the target (section + 10.18) + b) Command retry (section 6.2.1) + c) Recovery R2T support (section 6.7) + d) Requesting retransmission of status/data/R2T using the SNACK + facility (section 10.16) + e) Acknowledging the receipt of the data (section 10.16) + f) Reassigning the connection allegiance of a task to a different + TCP connection (section 6.2.2) + g) Terminating the entire iSCSI session to start afresh (section + 6.1.4.4) + + The target mechanisms defined in connection with error recovery are: + + a) NOP-IN to probe sequence numbers of the initiator (section + 10.19) + b) Requesting retransmission of data using the recovery R2T + feature (section 6.7) + c) SNACK support (section 10.16) d) Requesting that parts of + read data be acknowledged (section 10.7.2) + e) Allegiance reassignment support (section 6.2.2) + f) Terminating the entire iSCSI session to force the initiator to + start over (section 6.1.4.4) + + For any outstanding SCSI command, it is assumed that iSCSI, in + conjunction with SCSI at the initiator, is able to keep enough + information to be able to rebuild the command PDU, and that outgoing + data is available (in host memory) for retransmission while the + command is outstanding. It is also assumed that at the target, + incoming data (read data) MAY be kept for recovery or it can be + reread from a device server. + + It is further assumed that a target will keep the "status & sense" + for a command it has executed if it supports status retransmission. + A target that agrees to support data retransmission is expected to be + prepared to retransmit the outgoing data (i.e., Data-In) on request + + + +Satran, et al. Standards Track [Page 68] + +RFC 3720 iSCSI April 2004 + + + until either the status for the completed command is acknowledged, or + the data in question has been separately acknowledged. + +6.1.4. Recovery Classes + + iSCSI enables the following classes of recovery (in the order of + increasing scope of affected iSCSI tasks): + + - Within a command (i.e., without requiring command restart). + - Within a connection (i.e., without requiring the connection to + be rebuilt, but perhaps requiring command restart). + - Connection recovery (i.e., perhaps requiring connections to be + rebuilt and commands to be reissued). + - Session recovery. + + The recovery scenarios detailed in the rest of this section are + representative rather than exclusive. In every case, they detail the + lowest class recovery that MAY be attempted. The implementer is left + to decide under which circumstances to escalate to the next recovery + class and/or what recovery classes to implement. Both the iSCSI + target and initiator MAY escalate the error handling to an error + recovery class, which impacts a larger number of iSCSI tasks in any + of the cases identified in the following discussion. + + In all classes, the implementer has the choice of deferring errors to + the SCSI initiator (with an appropriate response code), in which case + the task, if any, has to be removed from the target and all the side + effects, such as ACA, must be considered. + + Use of within-connection and within-command recovery classes MUST NOT + be attempted before the connection is in Full Feature Phase. + + In the detailed description of the recovery classes, the mandating + terms (MUST, SHOULD, MAY, etc.) indicate normative actions to be + executed if the recovery class is supported and used. + +6.1.4.1. Recovery Within-command + + At the target, the following cases lend themselves to + within-command recovery: + + - Lost data PDU - realized through one of the following: + + a) Data digest error - dealt with as specified in Section 6.7 + Digest Errors, using the option of a recovery R2T. + + + + + + +Satran, et al. Standards Track [Page 69] + +RFC 3720 iSCSI April 2004 + + + b) Sequence reception timeout (no data or + partial-data-and-no-F-bit) - considered an implicit sequence + error and dealt with as specified in Section 6.8 Sequence + Errors, using the option of a recovery R2T. + c) Header digest error, which manifests as a sequence reception + timeout or a sequence error - dealt with as specified in + Section 6.8 Sequence Errors, using the option of a recovery + R2T. + + At the initiator, the following cases lend themselves to + within-command recovery: + + Lost data PDU or lost R2T - realized through one of the + following: + + a) Data digest error - dealt with as specified in Section 6.7 + Digest Errors, using the option of a SNACK. + b) Sequence reception timeout (no status) or response reception + timeout - dealt with as specified in Section 6.8 Sequence + Errors, using the option of a SNACK. + c) Header digest error, which manifests as a sequence reception + timeout or a sequence error - dealt with as specified in + Section 6.8 Sequence Errors, using the option of a SNACK. + + To avoid a race with the target, which may already have a recovery + R2T or a termination response on its way, an initiator SHOULD NOT + originate a SNACK for an R2T based on its internal timeouts (if any). + Recovery in this case is better left to the target. + + The timeout values used by the initiator and target are outside the + scope of this document. Sequence reception timeout is generally a + large enough value to allow the data sequence transfer to be + complete. + +6.1.4.2. Recovery Within-connection + + At the initiator, the following cases lend themselves to + within-connection recovery: + + - Requests not acknowledged for a long time. Requests are + acknowledged explicitly through ExpCmdSN or implicitly by + receiving data and/or status. The initiator MAY retry + non-acknowledged commands as specified in Section 6.2 Retry and + Reassign in Recovery. + + + + + + + +Satran, et al. Standards Track [Page 70] + +RFC 3720 iSCSI April 2004 + + + - Lost iSCSI numbered Response. It is recognized by either + identifying a data digest error on a Response PDU or a Data-In + PDU carrying the status, or by receiving a Response PDU with a + higher StatSN than expected. In the first case, digest error + handling is done as specified in Section 6.7 Digest Errors using + the option of a SNACK. In the second case, sequence error + handling is done as specified in Section 6.8 Sequence Errors, + using the option of a SNACK. + + At the target, the following cases lend themselves to + within-connection recovery: + + - Status/Response not acknowledged for a long time. The target MAY + issue a NOP-IN (with a valid Target Transfer Tag or otherwise) + that carries the next status sequence number it is going to use + in the StatSN field. This helps the initiator detect any missing + StatSN(s) and issue a SNACK for the status. + + The timeout values used by the initiator and the target are outside + the scope of this document. + +6.1.4.3. Connection Recovery + + At an iSCSI initiator, the following cases lend themselves to + connection recovery: + + - TCP connection failure: The initiator MUST close the connection. + It then MUST either implicitly or explicitly logout the failed + connection with the reason code "remove the connection for + recovery" and reassign connection allegiance for all commands + still in progress associated with the failed connection on one or + more connections (some or all of which MAY be newly established + connections) using the "Task reassign" task management function + (see Section 10.5.1 Function). For an initiator, a command is in + progress as long as it has not received a response or a Data-In + PDU including status. + + Note: The logout function is mandatory. However, a new connection + establishment is only mandatory if the failed connection was the + last or only connection in the session. + + - Receiving an Asynchronous Message that indicates one or all + connections in a session has been dropped. The initiator MUST + handle it as a TCP connection failure for the connection(s) + referred to in the Message. + + + + + + +Satran, et al. Standards Track [Page 71] + +RFC 3720 iSCSI April 2004 + + + At an iSCSI target, the following cases lend themselves to connection + recovery: + + - TCP connection failure. The target MUST close the connection and, + if more than one connection is available, the target SHOULD send + an Asynchronous Message that indicates it has dropped the + connection. Then, the target will wait for the initiator to + continue recovery. + +6.1.4.4. Session Recovery + + Session recovery should be performed when all other recovery attempts + have failed. Very simple initiators and targets MAY perform session + recovery on all iSCSI errors and rely on recovery on the SCSI layer + and above. + + Session recovery implies the closing of all TCP connections, + internally aborting all executing and queued tasks for the given + initiator at the target, terminating all outstanding SCSI commands + with an appropriate SCSI service response at the initiator, and + restarting a session on a new set of connection(s) (TCP connection + establishment and login on all new connections). + + For possible clearing effects of session recovery on SCSI and iSCSI + objects, refer to Appendix F. - Clearing Effects of Various Events on + Targets -. + +6.1.5. Error Recovery Hierarchy + + The error recovery classes described so far are organized into a + hierarchy for ease in understanding and to limit the implementation + complexity. With few and well defined recovery levels + interoperability is easier to achieve. The attributes of this + hierarchy are as follows: + + a) Each level is a superset of the capabilities of the previous + level. For example, Level 1 support implies supporting all + capabilities of Level 0 and more. + b) As a corollary, supporting a higher error recovery level means + increased sophistication and possibly an increase in resource + requirements. + c) Supporting error recovery level "n" is advertised and + negotiated by each iSCSI entity by exchanging the text key + "ErrorRecoveryLevel=n". The lower of the two exchanged values + is the operational ErrorRecoveryLevel for the session. + + + + + + +Satran, et al. Standards Track [Page 72] + +RFC 3720 iSCSI April 2004 + + + The following diagram represents the error recovery hierarchy. + + + + / + / 2 \ <-- Connection recovery + +-----+ + / 1 \ <-- Digest failure recovery + +---------+ + / 0 \ <-- Session failure recovery + +-------------+ + + The following table lists the error recovery capabilities expected + from the implementations that support each error recovery level. + + +-------------------+--------------------------------------------+ + |ErrorRecoveryLevel | Associated Error recovery capabilities | + +-------------------+--------------------------------------------+ + | 0 | Session recovery class | + | | (Section 6.1.4.4 Session Recovery) | + +-------------------+--------------------------------------------+ + | 1 | Digest failure recovery (See Note below.) | + | | plus the capabilities of ER Level 0 | + +-------------------+--------------------------------------------+ + | 2 | Connection recovery class | + | | (Section 6.1.4.3 Connection Recovery) | + | | plus the capabilities of ER Level 1 | + +-------------------+--------------------------------------------+ + + Note: Digest failure recovery is comprised of two recovery classes: + Within-Connection recovery class (Section 6.1.4.2 Recovery Within- + connection) and Within-Command recovery class (Section 6.1.4.1 + Recovery Within-command). + + When a defined value of ErrorRecoveryLevel is proposed by an + originator in a text negotiation, the originator MUST support the + functionality defined for the proposed value and additionally, the + functionality corresponding to any defined value numerically less + than the proposed. When a defined value of ErrorRecoveryLevel is + returned by a responder in a text negotiation, the responder MUST + support the functionality corresponding to the ErrorRecoveryLevel it + is accepting. + + When either party attempts to use error recovery functionality beyond + what is negotiated, the recovery attempts MAY fail unless an a priori + agreement outside the scope of this document exists between the two + parties to provide such support. + + + + + +Satran, et al. Standards Track [Page 73] + +RFC 3720 iSCSI April 2004 + + + Implementations MUST support error recovery level "0", while the rest + are OPTIONAL to implement. In implementation terms, the above + striation means that the following incremental sophistication with + each level is required. + + +-------------------+---------------------------------------------+ + |Level transition | Incremental requirement | + +-------------------+---------------------------------------------+ + | 0->1 | PDU retransmissions on the same connection | + +-------------------+---------------------------------------------+ + | 1->2 | Retransmission across connections and | + | | allegiance reassignment | + +-------------------+---------------------------------------------+ + +6.2. Retry and Reassign in Recovery + + This section summarizes two important and somewhat related iSCSI + protocol features used in error recovery. + +6.2.1. Usage of Retry + + By resending the same iSCSI command PDU ("retry") in the absence of a + command acknowledgement (by way of an ExpCmdSN update) or a response, + an initiator attempts to "plug" (what it thinks are) the + discontinuities in CmdSN ordering on the target end. Discarded + command PDUs, due to digest errors, may have created these + discontinuities. + + Retry MUST NOT be used for reasons other than plugging command + sequence gaps, and in particular, cannot be used for requesting PDU + retransmissions from a target. Any such PDU retransmission requests + for a currently allegiant command in progress may be made using the + SNACK mechanism described in section 10.16, although the usage of + SNACK is OPTIONAL. + + If initiators, as part of plugging command sequence gaps as described + above, inadvertently issue retries for allegiant commands already in + progress (i.e., targets did not see the discontinuities in CmdSN + ordering), the duplicate commands are silently ignored by targets as + specified in section 3.2.2.1. + + When an iSCSI command is retried, the command PDU MUST carry the + original Initiator Task Tag and the original operational attributes + (e.g., flags, function names, LUN, CDB etc.) as well as the original + CmdSN. The command being retried MUST be sent on the same connection + as the original command unless the original connection was already + successfully logged out. + + + + +Satran, et al. Standards Track [Page 74] + +RFC 3720 iSCSI April 2004 + + +6.2.2. Allegiance Reassignment + + By issuing a "task reassign" task management request (Section 10.5.1 + Function), the initiator signals its intent to continue an already + active command (but with no current connection allegiance) as part of + connection recovery. This means that a new connection allegiance is + requested for the command, which seeks to associate it to the + connection on which the task management request is being issued. + Before the allegiance reassignment is attempted for a task, an + implicit or explicit Logout with the reason code "remove the + connection for recovery" ( see section 10.14) MUST be successfully + completed for the previous connection to which the task was + allegiant. + + In reassigning connection allegiance for a command, the targets + SHOULD continue the command from its current state. For example, + when reassigning read commands, the target SHOULD take advantage of + the ExpDataSN field provided by the Task Management function request + (which must be set to zero if there was no data transfer) and bring + the read command to completion by sending the remaining data and + sending (or resending) the status. ExpDataSN acknowledges all data + sent up to, but not including, the Data-In PDU and or R2T with DataSN + (or R2TSN) equal to ExpDataSN. However, targets may choose to + send/receive all unacknowledged data or all of the data on a + reassignment of connection allegiance if unable to recover or + maintain an accurate state. Initiators MUST not subsequently request + data retransmission through Data SNACK for PDUs numbered less than + ExpDataSN (i.e., prior to the acknowledged sequence number). For all + types of commands, a reassignment request implies that the task is + still considered in progress by the initiator and the target must + conclude the task appropriately if the target returns the "Function + Complete" response to the reassignment request. This might possibly + involve retransmission of data/R2T/status PDUs as necessary, but MUST + involve the (re)transmission of the status PDU. + + It is OPTIONAL for targets to support the allegiance reassignment. + This capability is negotiated via the ErrorRecoveryLevel text key + during the login time. When a target does not support allegiance + reassignment, it MUST respond with a Task Management response code of + "Allegiance reassignment not supported". If allegiance reassignment + is supported by the target, but the task is still allegiant to a + different connection, or a successful recovery Logout of the + previously allegiant connection was not performed, the target MUST + respond with a Task Management response code of "Task still + allegiant". + + + + + + +Satran, et al. Standards Track [Page 75] + +RFC 3720 iSCSI April 2004 + + + If allegiance reassignment is supported by the target, the Task + Management response to the reassignment request MUST be issued before + the reassignment becomes effective. + + If a SCSI Command that involves data input is reassigned, any SNACK + Tag it holds for a final response from the original connection is + deleted and the default value of 0 MUST be used instead. + +6.3. Usage Of Reject PDU in Recovery + + Targets MUST NOT implicitly terminate an active task by sending a + Reject PDU for any PDU exchanged during the life of the task. If the + target decides to terminate the task, a Response PDU (SCSI, Text, + Task, etc.) must be returned by the target to conclude the task. If + the task had never been active before the Reject (i.e., the Reject is + on the command PDU), targets should not send any further responses + because the command itself is being discarded. + + The above rule means that the initiator can eventually expect a + response on receiving Rejects, if the received Reject is for a PDU + other than the command PDU itself. The non-command Rejects only have + diagnostic value in logging the errors, and they can be used for + retransmission decisions by the initiators. + + The CmdSN of the rejected command PDU (if it is a non-immediate + command) MUST NOT be considered received by the target (i.e., a + command sequence gap must be assumed for the CmdSN), even though the + CmdSN of the rejected command PDU may be reliably ascertained. Upon + receiving the Reject, the initiator MUST plug the CmdSN gap in order + to continue to use the session. The gap may be plugged either by + transmitting a command PDU with the same CmdSN, or by aborting the + task (see section 6.9 on how an abort may plug a CmdSN gap). + + When a data PDU is rejected and its DataSN can be ascertained, a + target MUST advance ExpDataSN for the current data burst if a + recovery R2T is being generated. The target MAY advance its + ExpDataSN if it does not attempt to recover the lost data PDU. + +6.4. Connection Timeout Management + + iSCSI defines two session-global timeout values (in seconds) + - Time2Wait and Time2Retain - that are applicable when an iSCSI Full + Feature Phase connection is taken out of service either intentionally + or by an exception. Time2Wait is the initial "respite time" before + attempting an explicit/implicit Logout for the CID in question or + task reassignment for the affected tasks (if any). Time2Retain is + the maximum time after the initial respite interval that the task + and/or connection state(s) is/are guaranteed to be maintained on the + + + +Satran, et al. Standards Track [Page 76] + +RFC 3720 iSCSI April 2004 + + + target to cater to a possible recovery attempt. Recovery attempts + for the connection and/or task(s) SHOULD NOT be made before Time2Wait + seconds, but MUST be completed within Time2Retain seconds after that + initial Time2Wait waiting period. + +6.4.1. Timeouts on Transport Exception Events + + A transport connection shutdown or a transport reset without any + preceding iSCSI protocol interactions informing the end-points of the + fact causes a Full Feature Phase iSCSI connection to be abruptly + terminated. The timeout values to be used in this case are the + negotiated values of defaultTime2Wait (Section 12.15 + DefaultTime2Wait) and DefaultTime2Retain (Section 12.16 + DefaultTime2Retain) text keys for the session. + +6.4.2. Timeouts on Planned Decommissioning + + Any planned decommissioning of a Full Feature Phase iSCSI connection + is preceded by either a Logout Response PDU, or an Async Message PDU. + The Time2Wait and Time2Retain field values (section 10.15) in a + Logout Response PDU, and the Parameter2 and Parameter3 fields of an + Async Message (AsyncEvent types "drop the connection" or "drop all + the connections"; section 10.9.1) specify the timeout values to be + used in each of these cases. + + These timeout values are only applicable for the affected connection, + and the tasks active on that connection. These timeout values have + no bearing on initiator timers (if any) that are already running on + connections or tasks associated with that session. + +6.5. Implicit Termination of Tasks + + A target implicitly terminates the active tasks due to iSCSI protocol + dynamics in the following cases: + + a) When a connection is implicitly or explicitly logged out with + the reason code of "Close the connection" and there are active + tasks allegiant to that connection. + + b) When a connection fails and the connection state eventually + times out (state transition M1 in Section 7.2.2 State + Transition Descriptions for Initiators and Targets) and there + are active tasks allegiant to that connection. + + c) When a successful Logout with the reason code of "remove the + connection for recovery" is performed while there are active + tasks allegiant to that connection, and those tasks eventually + + + + +Satran, et al. Standards Track [Page 77] + +RFC 3720 iSCSI April 2004 + + + time out after the Time2Wait and Time2Retain periods without + allegiance reassignment. + + d) When a connection is implicitly or explicitly logged out with + the reason code of "Close the session" and there are active + tasks in that session. + + If the tasks terminated in the above cases a), b, c) and d)are SCSI + tasks, they must be internally terminated as if with CHECK CONDITION + status. This status is only meaningful for appropriately handling + the internal SCSI state and SCSI side effects with respect to + ordering because this status is never communicated back as a + terminating status to the initiator. However additional actions may + have to be taken at SCSI level depending on the SCSI context as + defined by the SCSI standards (e.g., queued commands and ACA, in + cases a), b), and c), after the tasks are terminated, the target MUST + report a Unit Attention condition on the next command processed on + any connection for each affected I_T_L nexus with the status of CHECK + CONDITION, and the ASC/ASCQ value of 47h/7Fh - "SOME COMMANDS CLEARED + BY ISCSI PROTOCOL EVENT" , etc. - see [SAM2] and [SPC3]). + +6.6. Format Errors + + The following two explicit violations of PDU layout rules are format + errors: + + a) Illegal contents of any PDU header field except the Opcode + (legal values are specified in Section 10 iSCSI PDU Formats). + b) Inconsistent field contents (consistent field contents are + specified in Section 10 iSCSI PDU Formats). + + Format errors indicate a major implementation flaw in one of the + parties. + + When a target or an initiator receives an iSCSI PDU with a format + error, it MUST immediately terminate all transport connections in the + session either with a connection close or with a connection reset and + escalate the format error to session recovery (see Section 6.1.4.4 + Session Recovery). + +6.7. Digest Errors + + The discussion of the legal choices in handling digest errors below + excludes session recovery as an explicit option, but either party + detecting a digest error may choose to escalate the error to session + recovery. + + + + + +Satran, et al. Standards Track [Page 78] + +RFC 3720 iSCSI April 2004 + + + When a target or an initiator receives any iSCSI PDU, with a header + digest error, it MUST either discard the header and all data up to + the beginning of a later PDU or close the connection. Because the + digest error indicates that the length field of the header may have + been corrupted, the location of the beginning of a later PDU needs to + be reliably ascertained by other means such as the operation of a + sync and steering layer. + + When a target receives any iSCSI PDU with a payload digest error, it + MUST answer with a Reject PDU with a reason code of + Data-Digest-Error and discard the PDU. + + - If the discarded PDU is a solicited or unsolicited iSCSI data + PDU (for immediate data in a command PDU, non-data PDU rule + below applies), the target MUST do one of the following: + a) Request retransmission with a recovery R2T. + b) Terminate the task with a response PDU with a CHECK + CONDITION Status and an iSCSI Condition of "protocol service + CRC error" (Section 10.4.7.2 Sense Data). If the target + chooses to implement this option, it MUST wait to receive + all the data (signaled by a Data PDU with the final bit set + for all outstanding R2Ts) before sending the response PDU. + A task management command (such as an abort task) from the + initiator during this wait may also conclude the task. + - No further action is necessary for targets if the discarded PDU + is a non-data PDU. In case of immediate data being present on + a discarded command, the immediate data is implicitly recovered + when the task is retried (see section 6.2.1), followed by the + entire data transfer for the task. + + When an initiator receives any iSCSI PDU with a payload digest error, + it MUST discard the PDU. + + - If the discarded PDU is an iSCSI data PDU, the initiator MUST do + one of the following: + + a) Request the desired data PDU through SNACK. In response to the + SNACK, the target MUST either resend the data PDU or reject the + SNACK with a Reject PDU with a reason code of "SNACK reject" in + which case: + i) If the status has not already been sent for the command, + the target MUST terminate the command with a CHECK + CONDITION Status and an iSCSI Condition of "SNACK rejected" + (Section 10.4.7.2 Sense Data). + ii) If the status was already sent, no further action is + necessary for the target. The initiator in this case MUST + wait for the status to be received and then discard it, so + as to internally signal the completion with CHECK CONDITION + + + +Satran, et al. Standards Track [Page 79] + +RFC 3720 iSCSI April 2004 + + + Status and an iSCSI Condition of "protocol service CRC + error" (Section 10.4.7.2 Sense Data). + b) Abort the task and terminate the command with an error. + + - If the discarded PDU is a response PDU, the initiator MUST do one + of the following: + + a) Request PDU retransmission with a status SNACK. + b) Logout the connection for recovery and continue the tasks on a + different connection instance as described in Section 6.2 Retry + and Reassign in Recovery. + c) Logout to close the connection (abort all the commands + associated with the connection). + + - No further action is necessary for initiators if the discarded PDU + is an unsolicited PDU (e.g., Async, Reject). Task timeouts as in + the initiator waiting for a command completion, or process + timeouts, as in the target waiting for a Logout, will ensure that + the correct operational behavior will result in these cases + despite the discarded PDU. + +6.8. Sequence Errors + + When an initiator receives an iSCSI R2T/data PDU with an out of order + R2TSN/DataSN or a SCSI response PDU with an ExpDataSN that implies + missing data PDU(s), it means that the initiator must have detected a + header or payload digest error on one or more earlier R2T/data PDUs. + The initiator MUST address these implied digest errors as described + in Section 6.7 Digest Errors. When a target receives a data PDU with + an out of order DataSN, it means that the target must have hit a + header or payload digest error on at least one of the earlier data + PDUs. The target MUST address these implied digest errors as + described in Section 6.7 Digest Errors. + + When an initiator receives an iSCSI status PDU with an out of order + StatSN that implies missing responses, it MUST address the one or + more missing status PDUs as described in Section 6.7 Digest Errors. + As a side effect of receiving the missing responses, the initiator + may discover missing data PDUs. If the initiator wants to recover + the missing data for a command, it MUST NOT acknowledge the received + responses that start from the StatSN of the relevant command, until + it has completed receiving all the data PDUs of the command. + + When an initiator receives duplicate R2TSNs (due to proactive + retransmission of R2Ts by the target) or duplicate DataSNs (due to + proactive SNACKs by the initiator), it MUST discard the duplicates. + + + + + +Satran, et al. Standards Track [Page 80] + +RFC 3720 iSCSI April 2004 + + +6.9. SCSI Timeouts + + An iSCSI initiator MAY attempt to plug a command sequence gap on the + target end (in the absence of an acknowledgement of the command by + way of ExpCmdSN) before the ULP timeout by retrying the + unacknowledged command, as described in Section 6.2 Retry and + Reassign in Recovery. + + On a ULP timeout for a command (that carried a CmdSN of n), if the + iSCSI initiator intends to continue the session, it MUST abort the + command by either using an appropriate Task Management function + request for the specific command, or a "close the connection" Logout. + When using an ABORT TASK, if the ExpCmdSN is still less than (n+1), + the target may see the abort request while missing the original + command itself due to one of the following reasons: + + - Original command was dropped due to digest error. + - Connection on which the original command was sent was + successfully logged out. Upon logout, the unacknowledged + commands issued on the connection being logged out are + discarded. + + If the abort request is received and the original command is missing, + targets MUST consider the original command with that RefCmdSN to be + received and issue a Task Management response with the response code: + "Function Complete". This response concludes the task on both ends. + If the abort request is received and the target can determine (based + on the Referenced Task Tag) that the command was received and + executed and also that the response was sent prior to the abort, then + the target MUST respond with the response code of "Task Does Not + Exist". + +6.10. Negotiation Failures + + Text request and response sequences, when used to set/negotiate + operational parameters, constitute the negotiation/parameter setting. + A negotiation failure is considered to be one or more of the + following: + + - None of the choices, or the stated value, is acceptable to one + of the sides in the negotiation. + - The text request timed out and possibly terminated. + - The text request was answered with a Reject PDU. + + + + + + + + +Satran, et al. Standards Track [Page 81] + +RFC 3720 iSCSI April 2004 + + + The following two rules should be used to address negotiation + failures: + + - During Login, any failure in negotiation MUST be considered a + login process failure and the Login Phase must be terminated, + and with it, the connection. If the target detects the + failure, it must terminate the login with the appropriate Login + Response code. + + - A failure in negotiation, while in the Full Feature Phase, will + terminate the entire negotiation sequence that may consist of a + series of text requests that use the same Initiator Task Tag. + The operational parameters of the session or the connection + MUST continue to be the values agreed upon during an earlier + successful negotiation (i.e., any partial results of this + unsuccessful negotiation MUST NOT take effect and MUST be + discarded). + +6.11. Protocol Errors + + Mapping framed messages over a "stream" connection, such as TCP, + makes the proposed mechanisms vulnerable to simple software framing + errors. On the other hand, the introduction of framing mechanisms to + limit the effects of these errors may be onerous on performance for + simple implementations. Command Sequence Numbers and the above + mechanisms for connection drop and reestablishment help handle this + type of mapping errors. + + All violations of iSCSI PDU exchange sequences specified in this + document are also protocol errors. This category of errors can only + be addressed by fixing the implementations; iSCSI defines Reject and + response codes to enable this. + +6.12. Connection Failures + + iSCSI can keep a session in operation if it is able to + keep/establish at least one TCP connection between the initiator and + the target in a timely fashion. Targets and/or initiators may + recognize a failing connection by either transport level means (TCP), + a gap in the command sequence number, a response stream that is not + filled for a long time, or by a failing iSCSI NOP (acting as a ping). + The latter MAY be used periodically to increase the speed and + likelihood of detecting connection failures. Initiators and targets + MAY also use the keep-alive option on the TCP connection to enable + early link failure detection on otherwise idle links. + + + + + + +Satran, et al. Standards Track [Page 82] + +RFC 3720 iSCSI April 2004 + + + On connection failure, the initiator and target MUST do one of the + following: + + - Attempt connection recovery within the session (Section 6.1.4.3 + Connection Recovery). + + - Logout the connection with the reason code "closes the + connection" (Section 10.14.5 Implicit termination of tasks), + re-issue missing commands, and implicitly terminate all active + commands. This option requires support for the + within-connection recovery class (Section 6.1.4.2 Recovery + Within-connection). + + - Perform session recovery (Section 6.1.4.4 Session Recovery). + + Either side may choose to escalate to session recovery (via the + initiator dropping all the connections, or via an Async Message that + announces the similar intent from a target), and the other side MUST + give it precedence. On a connection failure, a target MUST terminate + and/or discard all of the active immediate commands regardless of + which of the above options is used (i.e., immediate commands are not + recoverable across connection failures). + +6.13. Session Errors + + If all of the connections of a session fail and cannot be + reestablished in a short time, or if initiators detect protocol + errors repeatedly, an initiator may choose to terminate a session and + establish a new session. + + In this case, the initiator takes the following actions: + + - Resets or closes all the transport connections. + - Terminates all outstanding requests with an appropriate + response before initiating a new session. If the same I_T + nexus is intended to be reestablished, the initiator MUST + employ session reinstatement (see section 5.3.5). + + When the session timeout (the connection state timeout for the last + failed connection) happens on the target, it takes the following + actions: + + - Resets or closes the TCP connections (closes the session). + - Terminates all active tasks that were allegiant to the + connection(s) that constituted the session. + + A target MUST also be prepared to handle a session reinstatement + request from the initiator, that may be addressing session errors. + + + +Satran, et al. Standards Track [Page 83] + +RFC 3720 iSCSI April 2004 + + +7. State Transitions + + iSCSI connections and iSCSI sessions go through several well-defined + states from the time they are created to the time they are cleared. + + The connection state transitions are described in two separate but + dependent state diagrams for ease in understanding. The first + diagram, "standard connection state diagram", describes the + connection state transitions when the iSCSI connection is not waiting + for, or undergoing, a cleanup by way of an explicit or implicit + Logout. The second diagram, "connection cleanup state diagram", + describes the connection state transitions while performing the iSCSI + connection cleanup. + + The "session state diagram" describes the state transitions an iSCSI + session would go through during its lifetime, and it depends on the + states of possibly multiple iSCSI connections that participate in the + session. + + States and state transitions are described in the text, tables and + diagrams. The diagrams are used for illustration. The text and the + tables are the governing specification. + +7.1. Standard Connection State Diagrams + +7.1.1. State Descriptions for Initiators and Targets + + State descriptions for the standard connection state diagram are as + follows: + + -S1: FREE + -initiator: State on instantiation, or after successful + connection closure. + -target: State on instantiation, or after successful connection + closure. + -S2: XPT_WAIT + -initiator: Waiting for a response to its transport connection + establishment request. + -target: Illegal + -S3: XPT_UP + -initiator: Illegal + -target: Waiting for the Login process to commence. + -S4: IN_LOGIN + -initiator: Waiting for the Login process to conclude, possibly + involving several PDU exchanges. + -target: Waiting for the Login process to conclude, possibly + involving several PDU exchanges. + + + + +Satran, et al. Standards Track [Page 84] + +RFC 3720 iSCSI April 2004 + + + -S5: LOGGED_IN + -initiator: In Full Feature Phase, waiting for all internal, + iSCSI, and transport events. + -target: In Full Feature Phase, waiting for all internal, iSCSI, + and transport events. + -S6: IN_LOGOUT + -initiator: Waiting for a Logout response. + -target: Waiting for an internal event signaling completion of + logout processing. + -S7: LOGOUT_REQUESTED + -initiator: Waiting for an internal event signaling readiness to + proceed with Logout. + -target: Waiting for the Logout process to start after having + requested a Logout via an Async Message. + -S8: CLEANUP_WAIT + -initiator: Waiting for the context and/or resources to initiate + the cleanup processing for this CSM. + -target: Waiting for the cleanup process to start for this CSM. + +7.1.2. State Transition Descriptions for Initiators and Targets + + -T1: + -initiator: Transport connect request was made (e.g., TCP SYN + sent). + -target: Illegal + -T2: + -initiator: Transport connection request timed out, a transport + reset was received, or an internal event of receiving a + Logout response (success) on another connection for a + "close the session" Logout request was received. + -target:Illegal + -T3: + -initiator: Illegal + -target: Received a valid transport connection request that + establishes the transport connection. + -T4: + -initiator: Transport connection established, thus prompting the + initiator to start the iSCSI Login. + -target: Initial iSCSI Login Request was received. + -T5: + -initiator: The final iSCSI Login Response with a Status-Class + of zero was received. + -target: The final iSCSI Login Request to conclude the Login + Phase was received, thus prompting the target to send the + final iSCSI Login Response with a Status-Class of zero. + + + + + + +Satran, et al. Standards Track [Page 85] + +RFC 3720 iSCSI April 2004 + + + -T6: + -initiator: Illegal + -target: Timed out waiting for an iSCSI Login, transport + disconnect indication was received, transport reset was + received, or an internal event indicating a transport + timeout was received. In all these cases, the connection is + to be closed. + -T7: + -initiator - one of the following events caused the transition: + - The final iSCSI Login Response was received with a + non-zero Status-Class. + - Login timed out. + - A transport disconnect indication was received. + - A transport reset was received. + - An internal event was received indicating a transport + timeout. + - An internal event of receiving a Logout response (success) + on another connection for a "close the session" Logout + request was received. + + In all these cases, the transport connection is closed. + + -target - one of the following events caused the transition: + - The final iSCSI Login Request to conclude the Login Phase + was received, prompting the target to send the final iSCSI + Login Response with a non-zero Status-Class. + - Login timed out. + - Transport disconnect indication was received. + - Transport reset was received. + - An internal event indicating a transport timeout was + received. + - On another connection a "close the session" Logout request + was received. + In all these cases, the connection is to be closed. + -T8: + -initiator: An internal event of receiving a Logout response + (success) on another connection for a "close the session" + Logout request was received, thus closing this connection + requiring no further cleanup. + -target: An internal event of sending a Logout response + (success) on another connection for a "close the session" + Logout request was received, or an internal event of a + successful connection/session reinstatement is received, + thus prompting the target to close this connection cleanly. + + + + + + + +Satran, et al. Standards Track [Page 86] + +RFC 3720 iSCSI April 2004 + + + -T9, T10: + -initiator: An internal event that indicates the readiness to + start the Logout process was received, thus prompting an + iSCSI Logout to be sent by the initiator. + -target: An iSCSI Logout request was received. + -T11, T12: + -initiator: Async PDU with AsyncEvent "Request Logout" was + received. + -target: An internal event that requires the decommissioning of + the connection is received, thus causing an Async PDU with + an AsyncEvent "Request Logout" to be sent. + -T13: + -initiator: An iSCSI Logout response (success) was received, or + an internal event of receiving a Logout response (success) + on another connection for a "close the session" Logout + request was received. + -target: An internal event was received that indicates + successful processing of the Logout, which prompts an iSCSI + Logout response (success) to be sent; an internal event of + sending a Logout response (success) on another connection + for a "close the session" Logout request was received; or an + internal event of a successful connection/session + reinstatement is received. In all these cases, the + transport connection is closed. + + -T14: + -initiator: Async PDU with AsyncEvent "Request Logout" was + received again. + -target: Illegal + -T15, T16: + -initiator: One or more of the following events caused this + transition: + -Internal event that indicates a transport connection + timeout was received thus prompting transport RESET or + transport connection closure. + -A transport RESET. + -A transport disconnect indication. + -Async PDU with AsyncEvent "Drop connection" (for this CID). + -Async PDU with AsyncEvent "Drop all connections". + -target: One or more of the following events caused this + transition: + -Internal event that indicates a transport connection + timeout was received, thus prompting transport RESET or + transport connection closure. + -An internal event of a failed connection/session + reinstatement is received. + -A transport RESET. + -A transport disconnect indication. + + + +Satran, et al. Standards Track [Page 87] + +RFC 3720 iSCSI April 2004 + + + -Internal emergency cleanup event was received which prompts + an Async PDU with AsyncEvent "Drop connection" (for this + CID), or event "Drop all connections". + -T17: + -initiator: One or more of the following events caused this + transition: + -Logout response, (failure i.e., a non-zero status) was + received, or Logout timed out. + -Any of the events specified for T15 and T16. + -target: One or more of the following events caused this + transition: + -Internal event that indicates a failure of the Logout + processing was received, which prompts a Logout response + (failure, i.e., a non-zero status) to be sent. + -Any of the events specified for T15 and T16. + -T18: + -initiator: An internal event of receiving a Logout response + (success) on another connection for a "close the session" + Logout request was received. + -target: An internal event of sending a Logout response + (success) on another connection for a "close the session" + Logout request was received, or an internal event of a + successful connection/session reinstatement is received. In + both these cases, the connection is closed. + + The CLEANUP_WAIT state (S8) implies that there are possible iSCSI + tasks that have not reached conclusion and are still considered busy. + +7.1.3. Standard Connection State Diagram for an Initiator + + Symbolic names for States: + + S1: FREE + S2: XPT_WAIT + S4: IN_LOGIN + S5: LOGGED_IN + S6: IN_LOGOUT + S7: LOGOUT_REQUESTED + S8: CLEANUP_WAIT + + + + + + + + + + + + +Satran, et al. Standards Track [Page 88] + +RFC 3720 iSCSI April 2004 + + + States S5, S6, and S7 constitute the Full Feature Phase operation of + the connection. + + The state diagram is as follows: + + -------<-------------+ + +--------->/ S1 \<----+ | + T13| +->\ /<-+ \ | + | / ---+--- \ \ | + | / | T2 \ | | + | T8 | |T1 | | | + | | | / |T7 | + | | | / | | + | | | / | | + | | V / / | + | | ------- / / | + | | / S2 \ / | + | | \ / / | + | | ---+--- / | + | | |T4 / | + | | V / | T18 + | | ------- / | + | | / S4 \ | + | | \ / | + | | ---+--- | T15 + | | |T5 +--------+---------+ + | | | /T16+-----+------+ | + | | | / -+-----+--+ | | + | | | / / S7 \ |T12| | + | | | / +->\ /<-+ V V + | | | / / -+----- ------- + | | | / /T11 |T10 / S8 \ + | | V / / V +----+ \ / + | | ---+-+- ----+-- | ------- + | | / S5 \T9 / S6 \<+ ^ + | +-----\ /--->\ / T14 | + | ------- --+----+------+T17 + +---------------------------+ + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 89] + +RFC 3720 iSCSI April 2004 + + + The following state transition table represents the above diagram. + Each row represents the starting state for a given transition, which + after taking a transition marked in a table cell would end in the + state represented by the column of the cell. For example, from state + S1, the connection takes the T1 transition to arrive at state S2. + The fields marked "-" correspond to undefined transitions. + + +----+---+---+---+---+----+---+ + |S1 |S2 |S4 |S5 |S6 |S7 |S8 | + ---+----+---+---+---+---+----+---+ + S1| - |T1 | - | - | - | - | - | + ---+----+---+---+---+---+----+---+ + S2|T2 |- |T4 | - | - | - | - | + ---+----+---+---+---+---+----+---+ + S4|T7 |- |- |T5 | - | - | - | + ---+----+---+---+---+---+----+---+ + S5|T8 |- |- | - |T9 |T11 |T15| + ---+----+---+---+---+---+----+---+ + S6|T13 |- |- | - |T14|- |T17| + ---+----+---+---+---+---+----+---+ + S7|T18 |- |- | - |T10|T12 |T16| + ---+----+---+---+---+---+----+---+ + S8| - |- |- | - | - | - | - | + ---+----+---+---+---+---+----+---+ + +7.1.4. Standard Connection State Diagram for a Target + + Symbolic names for States: + + S1: FREE + S3: XPT_UP + S4: IN_LOGIN + S5: LOGGED_IN + S6: IN_LOGOUT + S7: LOGOUT_REQUESTED + S8: CLEANUP_WAIT + + States S5, S6, and S7 constitute the Full Feature Phase operation of + the connection. + + + + + + + + + + + + +Satran, et al. Standards Track [Page 90] + +RFC 3720 iSCSI April 2004 + + + The state diagram is as follows: + + -------<-------------+ + +--------->/ S1 \<----+ | + T13| +->\ /<-+ \ | + | / ---+--- \ \ | + | / | T6 \ | | + | T8 | |T3 | | | + | | | / |T7 | + | | | / | | + | | | / | | + | | V / / | + | | ------- / / | + | | / S3 \ / | + | | \ / / | T18 + | | ---+--- / | + | | |T4 / | + | | V / | + | | ------- / | + | | / S4 \ | + | | \ / | + | | ---+--- T15 | + | | |T5 +--------+---------+ + | | | /T16+-----+------+ | + | | | / -+-----+---+ | | + | | | / / S7 \ |T12| | + | | | / +->\ /<-+ V V + | | | / / -+----- ------- + | | | / /T11 |T10 / S8 \ + | | V / / V \ / + | | ---+-+- ------- ------- + | | / S5 \T9 / S6 \ ^ + | +-----\ /--->\ / | + | ------- --+----+--------+T17 + +---------------------------+ + + The following state transition table represents the above diagram, + and follows the conventions described for the initiator diagram. + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 91] + +RFC 3720 iSCSI April 2004 + + + +----+---+---+---+---+----+---+ + |S1 |S3 |S4 |S5 |S6 |S7 |S8 | + ---+----+---+---+---+---+----+---+ + S1| - |T3 | - | - | - | - | - | + ---+----+---+---+---+---+----+---+ + S3|T6 |- |T4 | - | - | - | - | + ---+----+---+---+---+---+----+---+ + S4|T7 |- |- |T5 | - | - | - | + ---+----+---+---+---+---+----+---+ + S5|T8 |- |- | - |T9 |T11 |T15| + ---+----+---+---+---+---+----+---+ + S6|T13 |- |- | - |- |- |T17| + ---+----+---+---+---+---+----+---+ + S7|T18 |- |- | - |T10|T12 |T16| + ---+----+---+---+---+---+----+---+ + S8| - |- |- | - | - | - | - | + ---+----+---+---+---+---+----+---+ + +7.2. Connection Cleanup State Diagram for Initiators and Targets + + Symbolic names for states: + + R1: CLEANUP_WAIT (same as S8) + R2: IN_CLEANUP + R3: FREE (same as S1) + + Whenever a connection state machine (e.g., CSM-C) enters the + CLEANUP_WAIT state (S8), it must go through the state transitions + described in the connection cleanup state diagram either a) using a + separate full-feature phase connection (let's call it CSM-E) in the + LOGGED_IN state in the same session, or b) using a new transport + connection (let's call it CSM-I) in the FREE state that is to be + added to the same session. In the CSM-E case, an explicit logout for + the CID that corresponds to CSM-C (either as a connection or session + logout) needs to be performed to complete the cleanup. In the CSM-I + case, an implicit logout for the CID that corresponds to CSM-C needs + to be performed by way of connection reinstatement (section 5.3.4) + for that CID. In either case, the protocol exchanges on CSM-E or + CSM-I determine the state transitions for CSM-C. Therefore, this + cleanup state diagram is only applicable to the instance of the + connection in cleanup (i.e., CSM-C). In the case of an implicit + logout for example, CSM-C reaches FREE (R3) at the time CSM-I reaches + LOGGED_IN. In the case of an explicit logout, CSM-C reaches FREE + (R3) when CSM-E receives a successful logout response while + continuing to be in the LOGGED_IN state. + + + + + + +Satran, et al. Standards Track [Page 92] + +RFC 3720 iSCSI April 2004 + + + An initiator must initiate an explicit or implicit connection logout + for a connection in the CLEANUP_WAIT state, if the initiator intends + to continue using the associated iSCSI session. + + The following state diagram applies to both initiators and targets. + + ------- + / R1 \ + +--\ /<-+ + / ---+--- + / | \ M3 + M1 | |M2 | + | | / + | | / + | | / + | V / + | ------- / + | / R2 \ + | \ / + | ------- + | | + | |M4 + | | + | | + | | + | V + | ------- + | / R3 \ + +---->\ / + ------- + + The following state transition table represents the above diagram, + and follows the same conventions as in earlier sections. + + +----+----+----+ + |R1 |R2 |R3 | + -----+----+----+----+ + R1 | - |M2 |M1 | + -----+----+----+----+ + R2 |M3 | - |M4 | + -----+----+----+----+ + R3 | - | - | - | + -----+----+----+----+ + + + + + + + + +Satran, et al. Standards Track [Page 93] + +RFC 3720 iSCSI April 2004 + + +7.2.1. State Descriptions for Initiators and Targets + + -R1: CLEANUP_WAIT (Same as S8) + -initiator: Waiting for the internal event to initiate the + cleanup processing for CSM-C. + -target: Waiting for the cleanup process to start for CSM-C. + -R2: IN_CLEANUP + -initiator: Waiting for the connection cleanup process to + conclude for CSM-C. + -target: Waiting for the connection cleanup process to conclude + for CSM-C. + -R3: FREE (Same as S1) + -initiator: End state for CSM-C. + -target: End state for CSM-C. + +7.2.2. State Transition Descriptions for Initiators and Targets + + -M1: One or more of the following events was received: + -initiator: + -An internal event that indicates connection state timeout. + -An internal event of receiving a successful Logout response + on a different connection for a "close the session" + Logout. + -target: + -An internal event that indicates connection state timeout. + -An internal event of sending a Logout response (success) on + a different connection for a "close the session" Logout + request. + + -M2: An implicit/explicit logout process was initiated by the + initiator. + -In CSM-I usage: + -initiator: An internal event requesting the connection (or + session) reinstatement was received, thus prompting a + connection (or session) reinstatement Login to be sent + transitioning CSM-I to state IN_LOGIN. + -target: A connection/session reinstatement Login was + received while in state XPT_UP. + -In CSM-E usage: + -initiator: An internal event that indicates that an + explicit logout was sent for this CID in state LOGGED_IN. + -target: An explicit logout was received for this CID in + state LOGGED_IN. + + + + + + + + +Satran, et al. Standards Track [Page 94] + +RFC 3720 iSCSI April 2004 + + + -M3: Logout failure detected + -In CSM-I usage: + -initiator: CSM-I failed to reach LOGGED_IN and arrived into + FREE instead. + -target: CSM-I failed to reach LOGGED_IN and arrived into + FREE instead. + -In CSM-E usage: + -initiator: CSM-E either moved out of LOGGED_IN, or Logout + timed out and/or aborted, or Logout response (failure) + was received. + -target: CSM-E either moved out of LOGGED_IN, Logout timed + out and/or aborted, or an internal event that indicates a + failed Logout processing was received. A Logout response + (failure) was sent in the last case. + + -M4: Successful implicit/explicit logout was performed. + + - In CSM-I usage: + -initiator: CSM-I reached state LOGGED_IN, or an internal + event of receiving a Logout response (success) on another + connection for a "close the session" Logout request was + received. + -target: CSM-I reached state LOGGED_IN, or an internal event + of sending a Logout response (success) on a different + connection for a "close the session" Logout request was + received. + - In CSM-E usage: + -initiator: CSM-E stayed in LOGGED_IN and received a Logout + response (success), or an internal event of receiving a + Logout response (success) on another connection for a + "close the session" Logout request was received. + -target: CSM-E stayed in LOGGED_IN and an internal event + indicating a successful Logout processing was received, + or an internal event of sending a Logout response + (success) on a different connection for a "close the + session" Logout request was received. + +7.3. Session State Diagrams + +7.3.1. Session State Diagram for an Initiator + + Symbolic Names for States: + + Q1: FREE + Q3: LOGGED_IN + Q4: FAILED + + State Q3 represents the Full Feature Phase operation of the session. + + + +Satran, et al. Standards Track [Page 95] + +RFC 3720 iSCSI April 2004 + + + The state diagram is as follows: + + ------- + / Q1 \ + +------>\ /<-+ + / ---+--- | + / | |N3 + N6 | |N1 | + | | | + | N4 | | + | +--------+ | / + | | | | / + | | | | / + | | V V / + -+--+-- -----+- + / Q4 \ N5 / Q3 \ + \ /<---\ / + ------- ------- + + The state transition table is as follows: + + +----+----+----+ + |Q1 |Q3 |Q4 | + -----+----+----+----+ + Q1 | - |N1 | - | + -----+----+----+----+ + Q3 |N3 | - |N5 | + -----+----+----+----+ + Q4 |N6 |N4 | - | + -----+----+----+----+ + +7.3.2. Session State Diagram for a Target + + Symbolic Names for States: + + Q1: FREE + Q2: ACTIVE + Q3: LOGGED_IN + Q4: FAILED + Q5: IN_CONTINUE + + State Q3 represents the Full Feature Phase operation of the session. + + + + + + + + + +Satran, et al. Standards Track [Page 96] + +RFC 3720 iSCSI April 2004 + + + The state diagram is as follows: + + ------- + +------------------>/ Q1 \ + / +-------------->\ /<-+ + | | ---+--- | + | | ^ | |N3 + N6 | |N11 N9| V N1 | + | | +------ | + | | / Q2 \ | + | | \ / | + | --+---- +--+--- | + | / Q5 \ | | + | \ / N10 | | + | +-+---+------------+ |N2 / + | ^ | | | / + |N7| |N8 | | / + | | | | V / + -+--+-V V----+- + / Q4 \ N5 / Q3 \ + \ /<-------------\ / + ------- ------- + + The state transition table is as follows: + + +----+----+----+----+----+ + |Q1 |Q2 |Q3 |Q4 |Q5 | + -----+----+----+----+----+----+ + Q1 | - |N1 | - | - | - | + -----+----+----+----+----+----+ + Q2 |N9 | - |N2 | - | - | + -----+----+----+----+----+----+ + Q3 |N3 | - | - |N5 | - | + -----+----+----+----+----+----+ + Q4 |N6 | - | - | - |N7 | + -----+----+----+----+----+----+ + Q5 |N11 | - |N10 |N8 | - | + -----+----+----+----+----+----+ + +7.3.3. State Descriptions for Initiators and Targets + + -Q1: FREE + -initiator: State on instantiation or after cleanup. + -target: State on instantiation or after cleanup. + + + + + + + +Satran, et al. Standards Track [Page 97] + +RFC 3720 iSCSI April 2004 + + + -Q2: ACTIVE + -initiator: Illegal. + -target: The first iSCSI connection in the session transitioned + to IN_LOGIN, waiting for it to complete the login process. + + -Q3: LOGGED_IN + -initiator: Waiting for all session events. + -target: Waiting for all session events. + + -Q4: FAILED + -initiator: Waiting for session recovery or session + continuation. + -target: Waiting for session recovery or session continuation. + + -Q5: IN_CONTINUE + -initiator: Illegal. + -target: Waiting for session continuation attempt to reach a + conclusion. + +7.3.4. State Transition Descriptions for Initiators and Targets + + -N1: + -initiator: At least one transport connection reached the + LOGGED_IN state. + -target: The first iSCSI connection in the session had reached + the IN_LOGIN state. + + -N2: + -initiator: Illegal. + -target: At least one iSCSI connection reached the LOGGED_IN + state. + + -N3: + -initiator: Graceful closing of the session via session closure + (Section 5.3.6 Session Continuation and Failure). + -target: Graceful closing of the session via session closure + (Section 5.3.6 Session Continuation and Failure) or a + successful session reinstatement cleanly closed the session. + + -N4: + -initiator: A session continuation attempt succeeded. + -target: Illegal. + + -N5: + -initiator: Session failure (Section 5.3.6 Session Continuation + and Failure) occurred. + -target: Session failure (Section 5.3.6 Session Continuation and + Failure) occurred. + + + +Satran, et al. Standards Track [Page 98] + +RFC 3720 iSCSI April 2004 + + + -N6: + -initiator: Session state timeout occurred, or a session + reinstatement cleared this session instance. This results + in the freeing of all associated resources and the session + state is discarded. + -target: Session state timeout occurred, or a session + reinstatement cleared this session instance. This results + in the freeing of all associated resources and the session + state is discarded. + + -N7: + -initiator: Illegal. + -target: A session continuation attempt is initiated. + + -N8: + -initiator: Illegal. + -target: The last session continuation attempt failed. + + -N9: + -initiator: Illegal. + -target: Login attempt on the leading connection failed. + + -N10: + -initiator: Illegal. + -target: A session continuation attempt succeeded. + + -N11: + -initiator: Illegal. + -target: A successful session reinstatement cleanly closed the + session. + +8. Security Considerations + + Historically, native storage systems have not had to consider + security because their environments offered minimal security risks. + That is, these environments consisted of storage devices either + directly attached to hosts or connected via a Storage Area Network + (SAN) distinctly separate from the communications network. The use + of storage protocols, such as SCSI, over IP-networks requires that + security concerns be addressed. iSCSI implementations MUST provide + means of protection against active attacks (e.g., pretending to be + another identity, message insertion, deletion, modification, and + replaying) and passive attacks (e.g., eavesdropping, gaining + advantage by analyzing the data sent over the line). + + + + + + + +Satran, et al. Standards Track [Page 99] + +RFC 3720 iSCSI April 2004 + + + Although technically possible, iSCSI SHOULD NOT be configured without + security. iSCSI configured without security should be confined, in + extreme cases, to closed environments without any security risk. + [RFC3723] specifies the mechanisms that must be used in order to + mitigate risks fully described in that document. + + The following section describes the security mechanisms provided by + an iSCSI implementation. + +8.1. iSCSI Security Mechanisms + + The entities involved in iSCSI security are the initiator, target, + and the IP communication end points. iSCSI scenarios in which + multiple initiators or targets share a single communication end point + are expected. To accommodate such scenarios, iSCSI uses two separate + security mechanisms: In-band authentication between the initiator and + the target at the iSCSI connection level (carried out by exchange of + iSCSI Login PDUs), and packet protection (integrity, authentication, + and confidentiality) by IPsec at the IP level. The two security + mechanisms complement each other. The in-band authentication + provides end-to-end trust (at login time) between the iSCSI initiator + and the target while IPsec provides a secure channel between the IP + communication end points. + + Further details on typical iSCSI scenarios and the relation between + the initiators, targets, and the communication end points can be + found in [RFC3723]. + +8.2. In-band Initiator-Target Authentication + + During login, the target MAY authenticate the initiator and the + initiator MAY authenticate the target. The authentication is + performed on every new iSCSI connection by an exchange of iSCSI Login + PDUs using a negotiated authentication method. + + The authentication method cannot assume an underlying IPsec + protection, because IPsec is optional to use. An attacker should + gain as little advantage as possible by inspecting the authentication + phase PDUs. Therefore, a method using clear text (or equivalent) + passwords is not acceptable; on the other hand, identity protection + is not strictly required. + + The authentication mechanism protects against an unauthorized login + to storage resources by using a false identity (spoofing). Once the + authentication phase is completed, if the underlying IPsec is not + used, all PDUs are sent and received in clear. The authentication + + + + + +Satran, et al. Standards Track [Page 100] + +RFC 3720 iSCSI April 2004 + + + mechanism alone (without underlying IPsec) should only be used when + there is no risk of eavesdropping, message insertion, deletion, + modification, and replaying. + + Section 11 iSCSI Security Text Keys and Authentication Methods + defines several authentication methods and the exact steps that must + be followed in each of them, including the iSCSI-text-keys and their + allowed values in each step. Whenever an iSCSI initiator gets a + response whose keys, or their values, are not according to the step + definition, it MUST abort the connection. Whenever an iSCSI target + gets a response whose keys, or their values, are not according to the + step definition, it MUST answer with a Login reject with the + "Initiator Error" or "Missing Parameter" status. These statuses are + not intended for cryptographically incorrect values such as the CHAP + response, for which "Authentication Failure" status MUST be + specified. The importance of this rule can be illustrated in CHAP + with target authentication (see Section 11.1.4 Challenge Handshake + Authentication Protocol (CHAP)) where the initiator would have been + able to conduct a reflection attack by omitting his response key + (CHAP_R) using the same CHAP challenge as the target and reflecting + the target's response back to the target. In CHAP, this is prevented + because the target must answer the missing CHAP_R key with a Login + reject with the "Missing Parameter" status. + + For some of the authentication methods, a key specifies the identity + of the iSCSI initiator or target for authentication purposes. The + value associated with that key MAY be different from the iSCSI name + and SHOULD be configurable. (CHAP_N, see Section 11.1.4 Challenge + Handshake Authentication Protocol (CHAP) and SRP_U, see Section + 11.1.3 Secure Remote Password (SRP)). + +8.2.1. CHAP Considerations + + Compliant iSCSI initiators and targets MUST implement the CHAP + authentication method [RFC1994] (according to Section 11.1.4 + Challenge Handshake Authentication Protocol (CHAP) including the + target authentication option). + + When CHAP is performed over a non-encrypted channel, it is vulnerable + to an off-line dictionary attack. Implementations MUST support use + of up to 128 bit random CHAP secrets, including the means to generate + such secrets and to accept them from an external generation source. + Implementations MUST NOT provide secret generation (or expansion) + means other than random generation. + + An administrative entity of an environment in which CHAP is used with + a secret that has less than 96 random bits MUST enforce IPsec + encryption (according to the implementation requirements in Section + + + +Satran, et al. Standards Track [Page 101] + +RFC 3720 iSCSI April 2004 + + + 8.3.2 Confidentiality) to protect the connection. Moreover, in this + case IKE authentication with group pre-shared cryptographic keys + SHOULD NOT be used unless it is not essential to protect group + members against off-line dictionary attacks by other members. + + CHAP secrets MUST be an integral number of bytes (octets). A + compliant implementation SHOULD NOT continue with the login step in + which it should send a CHAP response (CHAP_R, Section 11.1.4 + Challenge Handshake Authentication Protocol (CHAP)) unless it can + verify that the CHAP secret is at least 96 bits, or that IPsec + encryption is being used to protect the connection. + + Any CHAP secret used for initiator authentication MUST NOT be + configured for authentication of any target, and any CHAP secret used + for target authentication MUST NOT be configured for authentication + of any initiator. If the CHAP response received by one end of an + iSCSI connection is the same as the CHAP response that the receiving + endpoint would have generated for the same CHAP challenge, the + response MUST be treated as an authentication failure and cause the + connection to close (this ensures that the same CHAP secret is not + used for authentication in both directions). Also, if an iSCSI + implementation can function as both initiator and target, different + CHAP secrets and identities MUST be configured for these two roles. + The following is an example of the attacks prevented by the above + requirements: + + Rogue wants to impersonate Storage to Alice, and knows that a + single secret is used for both directions of Storage-Alice + authentication. + + Rogue convinces Alice to open two connections to Rogue, and Rogue + identifies itself as Storage on both connections. + + Rogue issues a CHAP challenge on connection 1, waits for Alice to + respond, and then reflects Alice's challenge as the initial + challenge to Alice on connection 2. + + If Alice doesn't check for the reflection across connections, + Alice's response on connection 2 enables Rogue to impersonate + Storage on connection 1, even though Rogue does not know the + Alice-Storage CHAP secret. + + Originators MUST NOT reuse the CHAP challenge sent by the Responder + for the other direction of a bidirectional authentication. + Responders MUST check for this condition and close the iSCSI TCP + connection if it occurs. + + + + + +Satran, et al. Standards Track [Page 102] + +RFC 3720 iSCSI April 2004 + + + The same CHAP secret SHOULD NOT be configured for authentication of + multiple initiators or multiple targets, as this enables any of them + to impersonate any other one of them, and compromising one of them + enables the attacker to impersonate any of them. It is recommended + that iSCSI implementations check for use of identical CHAP secrets by + different peers when this check is feasible, and take appropriate + measures to warn users and/or administrators when this is detected. + + When an iSCSI initiator or target authenticates itself to + counterparts in multiple administrative domains, it SHOULD use a + different CHAP secret for each administrative domain to avoid + propagating security compromises across domains. + + Within a single administrative domain: + - A single CHAP secret MAY be used for authentication of an initiator + to multiple targets. + - A single CHAP secret MAY be used for an authentication of a target + to multiple initiators when the initiators use an external server + (e.g., RADIUS) to verify the target's CHAP responses and do not know + the target's CHAP secret. + + If an external response verification server (e.g., RADIUS) is not + used, employing a single CHAP secret for authentication of a target + to multiple initiators requires that all such initiators know that + target secret. Any of these initiators can impersonate the target to + any other such initiator, and compromise of such an initiator enables + an attacker to impersonate the target to all such initiators. + Targets SHOULD use separate CHAP secrets for authentication to each + initiator when such risks are of concern; in this situation it may be + useful to configure a separate logical iSCSI target with its own + iSCSI Node Name for each initiator or group of initiators among which + such separation is desired. + +8.2.2. SRP Considerations + + The strength of the SRP authentication method (specified in + [RFC2945]) is dependent on the characteristics of the group being + used (i.e., the prime modulus N and generator g). As described in + [RFC2945], N is required to be a Sophie-German prime (of the form + N = 2q + 1, where q is also prime) and the generator g is a primitive + root of GF(n). In iSCSI authentication, the prime modulus N MUST be + at least 768 bits. + + The list of allowed SRP groups is provided in [RFC3723]. + + + + + + + +Satran, et al. Standards Track [Page 103] + +RFC 3720 iSCSI April 2004 + + +8.3. IPsec + + iSCSI uses the IPsec mechanism for packet protection (cryptographic + integrity, authentication, and confidentiality) at the IP level + between the iSCSI communicating end points. The following sections + describe the IPsec protocols that must be implemented for data + integrity and authentication, confidentiality, and cryptographic key + management. + + An iSCSI initiator or target may provide the required IPsec support + fully integrated or in conjunction with an IPsec front-end device. + In the latter case, the compliance requirements with regard to IPsec + support apply to the "combined device". Only the "combined device" + is to be considered an iSCSI device. + + Detailed considerations and recommendations for using IPsec for iSCSI + are provided in [RFC3723]. + +8.3.1. Data Integrity and Authentication + + Data authentication and integrity is provided by a cryptographic + keyed Message Authentication Code in every sent packet. This code + protects against message insertion, deletion, and modification. + Protection against message replay is realized by using a sequence + counter. + + An iSCSI compliant initiator or target MUST provide data integrity + and authentication by implementing IPsec [RFC2401] with ESP [RFC2406] + in tunnel mode and MAY provide data integrity and authentication by + implementing IPsec with ESP in transport mode. The IPsec + implementation MUST fulfill the following iSCSI specific + requirements: + + - HMAC-SHA1 MUST be implemented [RFC2404]. + - AES CBC MAC with XCBC extensions SHOULD be implemented + [RFC3566]. + + The ESP anti-replay service MUST also be implemented. + + At the high speeds iSCSI is expected to operate, a single IPsec SA + could rapidly cycle through the 32-bit IPsec sequence number space. + In view of this, it may be desirable in the future for an iSCSI + implementation that operates at speeds of 1 Gbps or greater to + implement the IPsec sequence number extension [SEQ-EXT]. + + + + + + + +Satran, et al. Standards Track [Page 104] + +RFC 3720 iSCSI April 2004 + + +8.3.2. Confidentiality + + Confidentiality is provided by encrypting the data in every packet. + When confidentiality is used it MUST be accompanied by data integrity + and authentication to provide comprehensive protection against + eavesdropping, message insertion, deletion, modification, and + replaying. + + An iSCSI compliant initiator or target MUST provide confidentiality + by implementing IPsec [RFC2401] with ESP [RFC2406] in tunnel mode and + MAY provide confidentiality by implementing IPsec with ESP in + transport mode, with the following iSCSI specific requirements: + + - 3DES in CBC mode MUST be implemented [RFC2451]. + - AES in Counter mode SHOULD be implemented [RFC3686]. + + DES in CBC mode SHOULD NOT be used due to its inherent weakness. The + NULL encryption algorithm MUST also be implemented. + +8.3.3. Policy, Security Associations, and Cryptographic Key Management + + A compliant iSCSI implementation MUST meet the cryptographic key + management requirements of the IPsec protocol suite. Authentication, + security association negotiation, and cryptographic key management + MUST be provided by implementing IKE [RFC2409] using the IPsec DOI + [RFC2407] with the following iSCSI specific requirements: + + - Peer authentication using a pre-shared cryptographic key MUST be + supported. Certificate-based peer authentication using digital + signatures MAY be supported. Peer authentication using the + public key encryption methods outlined in IKE sections 5.2 and + 5.3[7] SHOULD NOT be used. + + - When digital signatures are used to achieve authentication, an + IKE negotiator SHOULD use IKE Certificate Request Payload(s) to + specify the certificate authority. IKE negotiators SHOULD check + the pertinent Certificate Revocation List (CRL) before accepting + a PKI certificate for use in IKE authentication procedures. + + - Conformant iSCSI implementations MUST support IKE Main Mode and + SHOULD support Aggressive Mode. IKE main mode with pre-shared + key authentication method SHOULD NOT be used when either the + initiator or the target uses dynamically assigned IP addresses. + While in many cases pre-shared keys offer good security, + situations in which dynamically assigned addresses are used force + the use of a group pre-shared key, which creates vulnerability to + a man-in-the-middle attack. + + + + +Satran, et al. Standards Track [Page 105] + +RFC 3720 iSCSI April 2004 + + + - In the IKE Phase 2 Quick Mode, exchanges for creating the Phase 2 + SA, the Identity Payload, fields MUST be present. ID_IPV4_ADDR, + ID_IPV6_ADDR (if the protocol stack supports IPv6) and ID_FQDN + Identity payloads MUST be supported; ID_USER_FQDN SHOULD be + supported. The IP Subnet, IP Address Range, ID_DER_ASN1_DN, and + ID_DER_ASN1_GN formats SHOULD NOT be used. The ID_KEY_ID + Identity Payload MUST NOT be used. + + Manual cryptographic keying MUST NOT be used because it does not + provide the necessary re-keying support. + + When IPsec is used, the receipt of an IKE Phase 2 delete message + SHOULD NOT be interpreted as a reason for tearing down the iSCSI TCP + connection. If additional traffic is sent on it, a new IKE Phase 2 + SA will be created to protect it. + + The method used by the initiator to determine whether the target + should be connected using IPsec is regarded as an issue of IPsec + policy administration, and thus not defined in the iSCSI standard. + + If an iSCSI target is discovered via a SendTargets request in a + discovery session not using IPsec, the initiator should assume that + it does not need IPsec to establish a session to that target. If an + iSCSI target is discovered using a discovery session that does use + IPsec, the initiator SHOULD use IPsec when establishing a session to + that target. + +9. Notes to Implementers + + This section notes some of the performance and reliability + considerations of the iSCSI protocol. This protocol was designed to + allow efficient silicon and software implementations. The iSCSI task + tag mechanism was designed to enable Direct Data Placement (DDP - a + DMA form) at the iSCSI level or lower. + + The guiding assumption made throughout the design of this protocol is + that targets are resource constrained relative to initiators. + + Implementers are also advised to consider the implementation + consequences of the iSCSI to SCSI mapping model as outlined in + Section 3.4.3 Consequences of the Model. + +9.1. Multiple Network Adapters + + The iSCSI protocol allows multiple connections, not all of which need + to go over the same network adapter. If multiple network connections + are to be utilized with hardware support, the iSCSI protocol + + + + +Satran, et al. Standards Track [Page 106] + +RFC 3720 iSCSI April 2004 + + + command-data-status allegiance to one TCP connection ensures that + there is no need to replicate information across network adapters or + otherwise require them to cooperate. + + However, some task management commands may require some loose form of + cooperation or replication at least on the target. + +9.1.1. Conservative Reuse of ISIDs + + Historically, the SCSI model (and implementations and applications + based on that model) has assumed that SCSI ports are static, physical + entities. Recent extensions to the SCSI model have taken advantage + of persistent worldwide unique names for these ports. In iSCSI + however, the SCSI initiator ports are the endpoints of dynamically + created sessions, so the presumptions of "static and physical" do not + apply. In any case, the model clauses (particularly, Section 3.4.2 + SCSI Architecture Model) provide for persistent, reusable names for + the iSCSI-type SCSI initiator ports even though there does not need + to be any physical entity bound to these names. + + To both minimize the disruption of legacy applications and to better + facilitate the SCSI features that rely on persistent names for SCSI + ports, iSCSI implementations SHOULD attempt to provide a stable + presentation of SCSI Initiator Ports (both to the upper OS-layers and + to the targets to which they connect). This can be achieved in an + initiator implementation by conservatively reusing ISIDs. In other + words, the same ISID should be used in the Login process to multiple + target portal groups (of the same iSCSI Target or different iSCSI + Targets). The ISID RULE (Section 3.4.3 Consequences of the Model) + only prohibits reuse to the same target portal group. It does not + "preclude" reuse to other target portal groups. The principle of + conservative reuse "encourages" reuse to other target portal groups. + When a SCSI target device sees the same (InitiatorName, ISID) pair in + different sessions to different target portal groups, it can identify + the underlying SCSI Initiator Port on each session as the same SCSI + port. In effect, it can recognize multiple paths from the same + source. + +9.1.2. iSCSI Name, ISID, and TPGT Use + + The designers of the iSCSI protocol envisioned there being one iSCSI + Initiator Node Name per operating system image on a machine. This + enables SAN resource configuration and authentication schemes based + on a system's identity. It supports the notion that it should be + possible to assign access to storage resources based on "initiator + device" identity. + + + + + +Satran, et al. Standards Track [Page 107] + +RFC 3720 iSCSI April 2004 + + + When there are multiple hardware or software components coordinated + as a single iSCSI Node, there must be some (logical) entity that + represents the iSCSI Node that makes the iSCSI Node Name available to + all components involved in session creation and login. Similarly, + this entity that represents the iSCSI Node must be able to coordinate + session identifier resources (ISID for initiators) to enforce both + the ISID and TSIH RULES (see Section 3.4.3 Consequences of the + Model). + + For targets, because of the closed environment, implementation of + this entity should be straightforward. However, vendors of iSCSI + hardware (e.g., NICs or HBAs) intended for targets, SHOULD provide + mechanisms for configuration of the iSCSI Node Name across the portal + groups instantiated by multiple instances of these components within + a target. + + However, complex targets making use of multiple Target Portal Group + Tags may reconfigure them to achieve various quality goals. The + initiators have two mechanisms at their disposal to discover and/or + check reconfiguring targets - the discovery session type and a key + returned by the target during login to confirm the TPGT. An + initiator should attempt to "rediscover" the target configuration + anytime a session is terminated unexpectedly. + + For initiators, in the long term, it is expected that operating + system vendors will take on the role of this entity and provide + standard APIs that can inform components of their iSCSI Node Name and + can configure and/or coordinate ISID allocation, use, and reuse. + + Recognizing that such initiator APIs are not available today, other + implementations of the role of this entity are possible. For + example, a human may instantiate the (common) Node name as part of + the installation process of each iSCSI component involved in session + creation and login. This may be done either by pointing the + component to a vendor-specific location for this datum or to a + system-wide location. The structure of the ISID namespace (see + Section 10.12.5 ISID and [RFC3721]) facilitates implementation of the + ISID coordination by allowing each component vendor to independently + (of other vendor's components) coordinate allocation, use, and reuse + of its own partition of the ISID namespace in a vendor-specific + manner. Partitioning of the ISID namespace within initiator portal + groups managed by that vendor allows each such initiator portal group + to act independently of all other portal groups when selecting an + ISID for a login; this facilitates enforcement of the ISID RULE (see + Section 3.4.3 Consequences of the Model) at the initiator. + + + + + + +Satran, et al. Standards Track [Page 108] + +RFC 3720 iSCSI April 2004 + + + A vendor of iSCSI hardware (e.g., NICs or HBAs) intended for use in + initiators MUST implement a mechanism for configuring the iSCSI Node + Name. Vendors, and administrators must ensure that iSCSI Node Names + are unique worldwide. It is therefore important that when one + chooses to reuse the iSCSI Node Name of a disabled unit, not to + re-assign that name to the original unit unless its worldwide + uniqueness can be ascertained again. + + In addition, a vendor of iSCSI hardware must implement a mechanism to + configure and/or coordinate ISIDs for all sessions managed by + multiple instances of that hardware within a given iSCSI Node. Such + configuration might be either permanently pre-assigned at the factory + (in a necessarily globally unique way), statically assigned (e.g., + partitioned across all the NICs at initialization in a locally unique + way), or dynamically assigned (e.g., on-line allocator, also in a + locally unique way). In the latter two cases, the configuration may + be via public APIs (perhaps driven by an independent vendor's + software, such as the OS vendor) or via private APIs driven by the + vendor's own software. + +9.2. Autosense and Auto Contingent Allegiance (ACA) + + Autosense refers to the automatic return of sense data to the + initiator in case a command did not complete successfully. iSCSI + initiators and targets MUST support and use autosense. + + ACA helps preserve ordered command execution in the presence of + errors. As iSCSI can have many commands in-flight between initiator + and target, iSCSI initiators and targets SHOULD support ACA. + +9.3. iSCSI Timeouts + + iSCSI recovery actions are often dependent on iSCSI time-outs being + recognized and acted upon before SCSI time-outs. Determining the + right time-outs to use for various iSCSI actions (command + acknowledgements expected, status acknowledgements, etc.) is very + much dependent on infrastructure (hardware, links, TCP/IP stack, + iSCSI driver). As a guide, the implementer may use an average + Nop-Out/Nop-In turnaround delay multiplied by a "safety factor" + (e.g., 4) as a good estimate for the basic delay of the iSCSI stack + for a given connection. The safety factor should account for the + network load variability. For connection teardown the implementer + may want to consider also the TCP common practice for the given + infrastructure. + + + + + + + +Satran, et al. Standards Track [Page 109] + +RFC 3720 iSCSI April 2004 + + + Text negotiations MAY also be subject to either time-limits or limits + in the number of exchanges. Those SHOULD be generous enough to avoid + affecting interoperability (e.g., allowing each key to be negotiated + on a separate exchange). + + The relation between iSCSI timeouts and SCSI timeouts should also be + considered. SCSI timeouts should be longer than iSCSI timeouts plus + the time required for iSCSI recovery whenever iSCSI recovery is + planned. Alternatively, an implementer may choose to interlock iSCSI + timeouts and recovery with SCSI timeouts so that SCSI recovery will + become active only where iSCSI is not planned to, or failed to, + recover. + + The implementer may also want to consider the interaction between + various iSCSI exception events - such as a digest failure - and + subsequent timeouts. When iSCSI error recovery is active, a digest + failure is likely to result in discovering a missing command or data + PDU. In these cases, an implementer may want to lower the timeout + values to enable faster initiation for recovery procedures. + +9.4. Command Retry and Cleaning Old Command Instances + + To avoid having old, retried command instances appear in a valid + command window after a command sequence number wrap around, the + protocol requires (see Section 3.2.2.1 Command Numbering and + Acknowledging) that on every connection on which a retry has been + issued, a non-immediate command be issued and acknowledged within a + 2**31-1 commands interval from the CmdSN of the retried command. + This requirement can be fulfilled by an implementation in several + ways. + + The simplest technique to use is to send a (non-retry) non-immediate + SCSI command (or a NOP if no SCSI command is available for a while) + after every command retry on the connection on which the retry was + attempted. As errors are deemed rare events, this technique is + probably the most effective, as it does not involve additional checks + at the initiator when issuing commands. + +9.5. Synch and Steering Layer and Performance + + While a synch and steering layer is optional, an initiator/target + that does not have it working against a target/initiator that demands + synch and steering may experience performance degradation caused by + packet reordering and loss. Providing a synch and steering mechanism + is recommended for all high-speed implementations. + + + + + + +Satran, et al. Standards Track [Page 110] + +RFC 3720 iSCSI April 2004 + + +9.6. Considerations for State-dependent Devices and Long-lasting SCSI + Operations + + Sequential access devices operate on the principle that the position + of the device is based on the last command processed. As such, + command processing order and knowledge of whether or not the previous + command was processed is of the utmost importance to maintain data + integrity. For example, inadvertent retries of SCSI commands when it + is not known if the previous SCSI command was processed is a + potential data integrity risk. + + For a sequential access device, consider the scenario in which a SCSI + SPACE command to backspace one filemark is issued and then re-issued + due to no status received for the command. If the first SPACE + command was actually processed, the re-issued SPACE command, if + processed, will cause the position to change. Thus, a subsequent + write operation will write data to the wrong position and any + previous data at that position will be overwritten. + + For a medium changer device, consider the scenario in which an + EXCHANGE MEDIUM command (the SOURCE ADDRESS and DESTINATION ADDRESS + are the same thus performing a swap) is issued and then re-issued due + to no status received for the command. If the first EXCHANGE MEDIUM + command was actually processed, the re-issued EXCHANGE MEDIUM + command, if processed, will perform the swap again. The net effect + is that a swap was not performed thus leaving a data integrity + exposure. + + All commands that change the state of the device (as in SPACE + commands for sequential access devices, and EXCHANGE MEDIUM for + medium changer device), MUST be issued as non-immediate commands for + deterministic and in order delivery to iSCSI targets. + + For many of those state changing commands, the execution model also + assumes that the command is executed exactly once. Devices + implementing READ POSITION and LOCATE provide a means for SCSI level + command recovery and new tape-class devices should support those + commands. In their absence a retry at SCSI level is difficult and + error recovery at iSCSI level is advisable. + + Devices operating on long latency delivery subsystems and performing + long lasting SCSI operations may need mechanisms that enable + connection replacement while commands are running (e.g., during an + extended copy operation). + + + + + + + +Satran, et al. Standards Track [Page 111] + +RFC 3720 iSCSI April 2004 + + +9.6.1. Determining the Proper ErrorRecoveryLevel + + The implementation and use of a specific ErrorRecoveryLevel should be + determined based on the deployment scenarios of a given iSCSI + implementation. Generally, the following factors must be considered + before deciding on the proper level of recovery: + + a) Application resilience to I/O failures. + b) Required level of availability in the face of transport + connection failures. + c) Probability of transport layer "checksum escape". This in + turn decides the iSCSI digest failure frequency, and thus the + criticality of iSCSI-level error recovery. The details of + estimating this probability are outside the scope of this + document. + + + A consideration of the above factors for SCSI tape devices as an + example suggests that implementations SHOULD use ErrorRecoveryLevel=1 + when transport connection failure is not a concern and SCSI level + recovery is unavailable, and ErrorRecoveryLevel=2 when the connection + failure is also of high likelihood during a backup/retrieval. + + For extended copy operations, implementations SHOULD use + ErrorRecoveryLevel=2 whenever there is a relatively high likelihood + of connection failure. + +10. iSCSI PDU Formats + + All multi-byte integers that are specified in formats defined in this + document are to be represented in network byte order (i.e., big + endian). Any field that appears in this document assumes that the + most significant byte is the lowest numbered byte and the most + significant bit (within byte or field) is the lowest numbered bit + unless specified otherwise. + + Any compliant sender MUST set all bits not defined and all reserved + fields to zero unless specified otherwise. Any compliant receiver + MUST ignore any bit not defined and all reserved fields unless + specified otherwise. Receipt of reserved code values in defined + fields MUST be reported as a protocol error. + + Reserved fields are marked by the word "reserved", some abbreviation + of "reserved", or by "." for individual bits when no other form of + marking is technically feasible. + + + + + + +Satran, et al. Standards Track [Page 112] + +RFC 3720 iSCSI April 2004 + + +10.1. iSCSI PDU Length and Padding + + iSCSI PDUs are padded to the closest integer number of four byte + words. The padding bytes SHOULD be sent as 0. + +10.2. PDU Template, Header, and Opcodes + + All iSCSI PDUs have one or more header segments and, optionally, a + data segment. After the entire header segment group a header-digest + MAY follow. The data segment MAY also be followed by a data-digest. + + The Basic Header Segment (BHS) is the first segment in all of the + iSCSI PDUs. The BHS is a fixed-length 48-byte header segment. It + MAY be followed by Additional Header Segments (AHS), a Header-Digest, + a Data Segment, and/or a Data-Digest. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 113] + +RFC 3720 iSCSI April 2004 + + + The overall structure of an iSCSI PDU is as follows: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0/ Basic Header Segment (BHS) / + +/ / + +---------------+---------------+---------------+---------------+ + 48/ Additional Header Segment 1 (AHS) (optional) / + +/ / + +---------------+---------------+---------------+---------------+ + / Additional Header Segment 2 (AHS) (optional) / + +/ / + +---------------+---------------+---------------+---------------+ + ---- + +---------------+---------------+---------------+---------------+ + / Additional Header Segment n (AHS) (optional) / + +/ / + +---------------+---------------+---------------+---------------+ + ---- + +---------------+---------------+---------------+---------------+ + k/ Header-Digest (optional) / + +/ / + +---------------+---------------+---------------+---------------+ + l/ Data Segment(optional) / + +/ / + +---------------+---------------+---------------+---------------+ + m/ Data-Digest (optional) / + +/ / + +---------------+---------------+---------------+---------------+ + + All PDU segments and digests are padded to the closest integer number + of four byte words. For example, all PDU segments and digests start + at a four byte word boundary and the padding ranges from 0 to 3 + bytes. The padding bytes SHOULD be sent as 0. + + iSCSI response PDUs do not have AH Segments. + +10.2.1. Basic Header Segment (BHS) + + The BHS is 48 bytes long. The Opcode and DataSegmentLength fields + appear in all iSCSI PDUs. In addition, when used, the Initiator Task + Tag and Logical Unit Number always appear in the same location in the + header. + + + + + + +Satran, et al. Standards Track [Page 114] + +RFC 3720 iSCSI April 2004 + + + The format of the BHS is: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|I| Opcode |F| Opcode-specific fields | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Opcode-specific fields | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20/ Opcode-specific fields / + +/ / + +---------------+---------------+---------------+---------------+ + 48 + +10.2.1.1 I + + For request PDUs, the I bit set to 1 is an immediate delivery marker. + +10.2.1.2. Opcode + + The Opcode indicates the type of iSCSI PDU the header encapsulates. + + The Opcodes are divided into two categories: initiator opcodes and + target opcodes. Initiator opcodes are in PDUs sent by the initiator + (request PDUs). Target opcodes are in PDUs sent by the target + (response PDUs). + + Initiators MUST NOT use target opcodes and targets MUST NOT use + initiator opcodes. + + Initiator opcodes defined in this specification are: + + 0x00 NOP-Out + 0x01 SCSI Command (encapsulates a SCSI Command Descriptor Block) + 0x02 SCSI Task Management function request + 0x03 Login Request + 0x04 Text Request + 0x05 SCSI Data-Out (for WRITE operations) + 0x06 Logout Request + 0x10 SNACK Request + 0x1c-0x1e Vendor specific codes + + + +Satran, et al. Standards Track [Page 115] + +RFC 3720 iSCSI April 2004 + + + + Target opcodes are: + + 0x20 NOP-In + 0x21 SCSI Response - contains SCSI status and possibly sense + information or other response information. + 0x22 SCSI Task Management function response + 0x23 Login Response + 0x24 Text Response + 0x25 SCSI Data-In - for READ operations. + 0x26 Logout Response + 0x31 Ready To Transfer (R2T) - sent by target when it is ready + to receive data. + 0x32 Asynchronous Message - sent by target to indicate certain + special conditions. + 0x3c-0x3e Vendor specific codes + 0x3f Reject + + All other opcodes are reserved. + +10.2.1.3. Final (F) bit + + When set to 1 it indicates the final (or only) PDU of a sequence. + +10.2.1.4. Opcode-specific Fields + + These fields have different meanings for different opcode types. + +10.2.1.5. TotalAHSLength + + Total length of all AHS header segments in units of four byte words + including padding, if any. + + The TotalAHSLength is only used in PDUs that have an AHS and MUST be + 0 in all other PDUs. + +10.2.1.6. DataSegmentLength + + This is the data segment payload length in bytes (excluding padding). + The DataSegmentLength MUST be 0 whenever the PDU has no data segment. + +10.2.1.7. LUN + + Some opcodes operate on a specific Logical Unit. The Logical Unit + Number (LUN) field identifies which Logical Unit. If the opcode does + not relate to a Logical Unit, this field is either ignored or may be + used in an opcode specific way. The LUN field is 64-bits and should + + + + +Satran, et al. Standards Track [Page 116] + +RFC 3720 iSCSI April 2004 + + + be formatted in accordance with [SAM2]. For example, LUN[0] from + [SAM2] is BHS byte 8 and so on up to LUN[7] from [SAM2], which is BHS + byte 15. + +10.2.1.8. Initiator Task Tag + + The initiator assigns a Task Tag to each iSCSI task it issues. While + a task exists, this tag MUST uniquely identify the task session-wide. + SCSI may also use the initiator task tag as part of the SCSI task + identifier when the timespan during which an iSCSI initiator task tag + must be unique extends over the timespan during which a SCSI task tag + must be unique. However, the iSCSI Initiator Task Tag must exist and + be unique even for untagged SCSI commands. + +10.2.2. Additional Header Segment (AHS) + + The general format of an AHS is: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0| AHSLength | AHSType | AHS-Specific | + +---------------+---------------+---------------+---------------+ + 4/ AHS-Specific / + +/ / + +---------------+---------------+---------------+---------------+ + x + +10.2.2.1. AHSType + + The AHSType field is coded as follows: + + bit 0-1 - Reserved + + bit 2-7 - AHS code + + 0 - Reserved + 1 - Extended CDB + 2 - Expected Bidirectional Read Data Length + 3 - 63 Reserved + +10.2.2.2. AHSLength + + This field contains the effective length in bytes of the AHS + excluding AHSType and AHSLength and padding, if any. The AHS is + padded to the smallest integer number of 4 byte words (i.e., from 0 + up to 3 padding bytes). + + + +Satran, et al. Standards Track [Page 117] + +RFC 3720 iSCSI April 2004 + + +10.2.2.3. Extended CDB AHS + + The format of the Extended CDB AHS is: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0| AHSLength (CDBLength-15) | 0x01 | Reserved | + +---------------+---------------+---------------+---------------+ + 4/ ExtendedCDB...+padding / + +/ / + +---------------+---------------+---------------+---------------+ + x + + This type of AHS MUST NOT be used if the CDBLength is less than 17. + The length includes the reserved byte 3. + +10.2.2.4. Bidirectional Expected Read-Data Length AHS + + The format of the Bidirectional Read Expected Data Transfer Length + AHS is: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0| AHSLength (0x0005) | 0x02 | Reserved | + +---------------+---------------+---------------+---------------+ + 4| Expected Read-Data Length | + +---------------+---------------+---------------+---------------+ + 8 + +10.2.3. Header Digest and Data Digest + + Optional header and data digests protect the integrity of the header + and data, respectively. The digests, if present, are located, + respectively, after the header and PDU-specific data, and cover + respectively the header and the PDU data, each including the padding + bytes, if any. + + The existence and type of digests are negotiated during the Login + Phase. + + The separation of the header and data digests is useful in iSCSI + routing applications, in which only the header changes when a message + is forwarded. In this case, only the header digest should be + recalculated. + + + +Satran, et al. Standards Track [Page 118] + +RFC 3720 iSCSI April 2004 + + + Digests are not included in data or header length fields. + + A zero-length Data Segment also implies a zero-length data-digest. + +10.2.4. Data Segment + + The (optional) Data Segment contains PDU associated data. Its + payload effective length is provided in the BHS field - + DataSegmentLength. The Data Segment is also padded to an integer + number of 4 byte words. + +10.3. SCSI Command + + The format of the SCSI Command PDU is: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|I| 0x01 |F|R|W|. .|ATTR | Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| Logical Unit Number (LUN) | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Expected Data Transfer Length | + +---------------+---------------+---------------+---------------+ + 24| CmdSN | + +---------------+---------------+---------------+---------------+ + 28| ExpStatSN | + +---------------+---------------+---------------+---------------+ + 32/ SCSI Command Descriptor Block (CDB) / + +/ / + +---------------+---------------+---------------+---------------+ + 48/ AHS (Optional) / + +---------------+---------------+---------------+---------------+ + x/ Header Digest (Optional) / + +---------------+---------------+---------------+---------------+ + y/ (DataSegment, Command Data) (Optional) / + +/ / + +---------------+---------------+---------------+---------------+ + z/ Data Digest (Optional) / + +---------------+---------------+---------------+---------------+ + + + + +Satran, et al. Standards Track [Page 119] + +RFC 3720 iSCSI April 2004 + + +10.3.1. Flags and Task Attributes (byte 1) + + The flags for a SCSI Command are: + + bit 0 (F) is set to 1 when no unsolicited SCSI Data-Out PDUs follow + this PDU. When F=1 for a write and if Expected Data + Transfer Length is larger than the DataSegmentLength, the + target may solicit additional data through R2T. + + bit 1 (R) is set to 1 when the command is expected to input data. + + bit 2 (W) is set to 1 when the command is expected to output data. + + bit 3-4 Reserved. + + bit 5-7 contains Task Attributes. + + Task Attributes (ATTR) have one of the following integer values (see + [SAM2] for details): + + 0 - Untagged + 1 - Simple + 2 - Ordered + 3 - Head of Queue + 4 - ACA + 5-7 - Reserved + + Setting both the W and the F bit to 0 is an error. Either or both of + R and W MAY be 1 when either the Expected Data Transfer Length and/or + Bidirectional Read Expected Data Transfer Length are 0, but they MUST + NOT both be 0 when the Expected Data Transfer Length and/or + Bidirectional Read Expected Data Transfer Length are not 0 (i.e., + when some data transfer is expected the transfer direction is + indicated by the R and/or W bit). + +10.3.2. CmdSN - Command Sequence Number + + Enables ordered delivery across multiple connections in a single + session. + +10.3.3. ExpStatSN + + Command responses up to ExpStatSN-1 (mod 2**32) have been received + (acknowledges status) on the connection. + + + + + + + +Satran, et al. Standards Track [Page 120] + +RFC 3720 iSCSI April 2004 + + +10.3.4. Expected Data Transfer Length + + For unidirectional operations, the Expected Data Transfer Length + field contains the number of bytes of data involved in this SCSI + operation. For a unidirectional write operation (W flag set to 1 and + R flag set to 0), the initiator uses this field to specify the number + of bytes of data it expects to transfer for this operation. For a + unidirectional read operation (W flag set to 0 and R flag set to 1), + the initiator uses this field to specify the number of bytes of data + it expects the target to transfer to the initiator. It corresponds + to the SAM2 byte count. + + For bidirectional operations (both R and W flags are set to 1), this + field contains the number of data bytes involved in the write + transfer. For bidirectional operations, an additional header segment + MUST be present in the header sequence that indicates the + Bidirectional Read Expected Data Transfer Length. The Expected Data + Transfer Length field and the Bidirectional Read Expected Data + Transfer Length field correspond to the SAM2 byte count + + If the Expected Data Transfer Length for a write and the length of + the immediate data part that follows the command (if any) are the + same, then no more data PDUs are expected to follow. In this case, + the F bit MUST be set to 1. + + If the Expected Data Transfer Length is higher than the + FirstBurstLength (the negotiated maximum amount of unsolicited data + the target will accept), the initiator MUST send the maximum amount + of unsolicited data OR ONLY the immediate data, if any. + + Upon completion of a data transfer, the target informs the initiator + (through residual counts) of how many bytes were actually processed + (sent and/or received) by the target. + +10.3.5. CDB - SCSI Command Descriptor Block + + There are 16 bytes in the CDB field to accommodate the commonly used + CDBs. Whenever the CDB is larger than 16 bytes, an Extended CDB AHS + MUST be used to contain the CDB spillover. + +10.3.6. Data Segment - Command Data + + Some SCSI commands require additional parameter data to accompany the + SCSI command. This data may be placed beyond the boundary of the + iSCSI header in a data segment. Alternatively, user data (e.g., from + a WRITE operation) can be placed in the data segment (both cases are + + + + + +Satran, et al. Standards Track [Page 121] + +RFC 3720 iSCSI April 2004 + + + referred to as immediate data). These data are governed by the rules + for solicited vs. unsolicited data outlined in Section 3.2.4.2 Data + Transfer Overview. + +10.4. SCSI Response + + The format of the SCSI Response PDU is: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x21 |1|. .|o|u|O|U|.| Response | Status | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| SNACK Tag or Reserved | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36| ExpDataSN or Reserved | + +---------------+---------------+---------------+---------------+ + 40| Bidirectional Read Residual Count or Reserved | + +---------------+---------------+---------------+---------------+ + 44| Residual Count or Reserved | + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + / Data Segment (Optional) / + +/ / + +---------------+---------------+---------------+---------------+ + | Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + + + + + + + +Satran, et al. Standards Track [Page 122] + +RFC 3720 iSCSI April 2004 + + +10.4.1. Flags (byte 1) + + bit 1-2 Reserved. + + bit 3 - (o) set for Bidirectional Read Residual Overflow. In this + case, the Bidirectional Read Residual Count indicates the number + of bytes that were not transferred to the initiator because the + initiator's Expected Bidirectional Read Data Transfer Length was + not sufficient. + + bit 4 - (u) set for Bidirectional Read Residual Underflow. In this + case, the Bidirectional Read Residual Count indicates the number + of bytes that were not transferred to the initiator out of the + number of bytes expected to be transferred. + + bit 5 - (O) set for Residual Overflow. In this case, the Residual + Count indicates the number of bytes that were not transferred + because the initiator's Expected Data Transfer Length was not + sufficient. For a bidirectional operation, the Residual Count + contains the residual for the write operation. + + bit 6 - (U) set for Residual Underflow. In this case, the Residual + Count indicates the number of bytes that were not transferred out + of the number of bytes that were expected to be transferred. For + a bidirectional operation, the Residual Count contains the + residual for the write operation. + + bit 7 - (0) Reserved. + + Bits O and U and bits o and u are mutually exclusive (i.e., having + both o and u or O and U set to 1 is a protocol error). For a + response other than "Command Completed at Target", bits 3-6 MUST be + 0. + +10.4.2. Status + + The Status field is used to report the SCSI status of the command (as + specified in [SAM2]) and is only valid if the Response Code is + Command Completed at target. + + + + + + + + + + + + +Satran, et al. Standards Track [Page 123] + +RFC 3720 iSCSI April 2004 + + + Some of the status codes defined in [SAM2] are: + + 0x00 GOOD + 0x02 CHECK CONDITION + 0x08 BUSY + 0x18 RESERVATION CONFLICT + 0x28 TASK SET FULL + 0x30 ACA ACTIVE + 0x40 TASK ABORTED + + See [SAM2] for the complete list and definitions. + + If a SCSI device error is detected while data from the initiator is + still expected (the command PDU did not contain all the data and the + target has not received a Data PDU with the final bit Set), the + target MUST wait until it receives a Data PDU with the F bit set in + the last expected sequence before sending the Response PDU. + +10.4.3. Response + + This field contains the iSCSI service response. + + iSCSI service response codes defined in this specification are: + + 0x00 - Command Completed at Target + 0x01 - Target Failure + 0x80-0xff - Vendor specific + + All other response codes are reserved. + + The Response is used to report a Service Response. The mapping of + the response code into a SCSI service response code value, if needed, + is outside the scope of this document. However, in symbolic terms + response value 0x00 maps to the SCSI service response (see [SAM2] and + [SPC3]) of TASK COMPLETE or LINKED COMMAND COMPLETE. All other + Response values map to the SCSI service response of SERVICE DELIVERY + OR TARGET FAILURE. + + If a PDU that includes SCSI status (Response PDU or Data-In PDU + including status) does not arrive before the session is terminated, + the SCSI service response is SERVICE DELIVERY OR TARGET FAILURE. + + A non-zero Response field indicates a failure to execute the command + in which case the Status and Flag fields are undefined. + + + + + + + +Satran, et al. Standards Track [Page 124] + +RFC 3720 iSCSI April 2004 + + +10.4.4. SNACK Tag + + This field contains a copy of the SNACK Tag of the last SNACK Tag + accepted by the target on the same connection and for the command for + which the response is issued. Otherwise it is reserved and should be + set to 0. + + After issuing a R-Data SNACK the initiator must discard any SCSI + status unless contained in an SCSI Response PDU carrying the same + SNACK Tag as the last issued R-Data SNACK for the SCSI command on the + current connection. + + For a detailed discussion on R-Data SNACK see Section 10.16 SNACK + Request. + +10.4.5. Residual Count + + The Residual Count field MUST be valid in the case where either the U + bit or the O bit is set. If neither bit is set, the Residual Count + field is reserved. Targets may set the residual count and initiators + may use it when the response code is "completed at target" (even if + the status returned is not GOOD). If the O bit is set, the Residual + Count indicates the number of bytes that were not transferred because + the initiator's Expected Data Transfer Length was not sufficient. If + the U bit is set, the Residual Count indicates the number of bytes + that were not transferred out of the number of bytes expected to be + transferred. + +10.4.6. Bidirectional Read Residual Count + + The Bidirectional Read Residual Count field MUST be valid in the case + where either the u bit or the o bit is set. If neither bit is set, + the Bidirectional Read Residual Count field is reserved. Targets may + set the Bidirectional Read Residual Count and initiators may use it + when the response code is "completed at target". If the o bit is + set, the Bidirectional Read Residual Count indicates the number of + bytes that were not transferred to the initiator because the + initiator's Expected Bidirectional Read Transfer Length was not + sufficient. If the u bit is set, the Bidirectional Read Residual + Count indicates the number of bytes that were not transferred to the + initiator out of the number of bytes expected to be transferred. + +10.4.7. Data Segment - Sense and Response Data Segment + + iSCSI targets MUST support and enable autosense. If Status is CHECK + CONDITION (0x02), then the Data Segment MUST contain sense data for + the failed command. + + + + +Satran, et al. Standards Track [Page 125] + +RFC 3720 iSCSI April 2004 + + + For some iSCSI responses, the response data segment MAY contain some + response related information, (e.g., for a target failure, it may + contain a vendor specific detailed description of the failure). + + If the DataSegmentLength is not 0, the format of the Data Segment is + as follows: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|SenseLength | Sense Data | + +---------------+---------------+---------------+---------------+ + x/ Sense Data / + +---------------+---------------+---------------+---------------+ + y/ Response Data / + / / + +---------------+---------------+---------------+---------------+ + z| + +10.4.7.1. SenseLength + + Length of Sense Data. + +10.4.7.2. Sense Data + + The Sense Data contains detailed information about a check condition + and [SPC3] specifies the format and content of the Sense Data. + + Certain iSCSI conditions result in the command being terminated at + the target (response Command Completed at Target) with a SCSI Check + Condition Status as outlined in the next table: + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 126] + +RFC 3720 iSCSI April 2004 + + + +--------------------------+----------+---------------------------+ + | iSCSI Condition |Sense | Additional Sense Code & | + | |Key | Qualifier | + +--------------------------+----------+---------------------------+ + | Unexpected unsolicited |Aborted | ASC = 0x0c ASCQ = 0x0c | + | data |Command-0B| Write Error | + +--------------------------+----------+---------------------------+ + | Incorrect amount of data |Aborted | ASC = 0x0c ASCQ = 0x0d | + | |Command-0B| Write Error | + +--------------------------+----------+---------------------------+ + | Protocol Service CRC |Aborted | ASC = 0x47 ASCQ = 0x05 | + | error |Command-0B| CRC Error Detected | + +--------------------------+----------+---------------------------+ + | SNACK rejected |Aborted | ASC = 0x11 ASCQ = 0x13 | + | |Command-0B| Read Error | + +--------------------------+----------+---------------------------+ + + The target reports the "Incorrect amount of data" condition if during + data output the total data length to output is greater than + FirstBurstLength and the initiator sent unsolicited non-immediate + data but the total amount of unsolicited data is different than + FirstBurstLength. The target reports the same error when the amount + of data sent as a reply to an R2T does not match the amount + requested. + +10.4.8. ExpDataSN + + The number of R2T and Data-In (read) PDUs the target has sent for the + command. + + This field MUST be 0 if the response code is not Command Completed at + Target or the target sent no Data-In PDUs for the command. + +10.4.9. StatSN - Status Sequence Number + + StatSN is a Sequence Number that the target iSCSI layer generates per + connection and that in turn, enables the initiator to acknowledge + status reception. StatSN is incremented by 1 for every + response/status sent on a connection except for responses sent as a + result of a retry or SNACK. In the case of responses sent due to a + retransmission request, the StatSN MUST be the same as the first time + the PDU was sent unless the connection has since been restarted. + + + + + + + + + +Satran, et al. Standards Track [Page 127] + +RFC 3720 iSCSI April 2004 + + +10.4.10. ExpCmdSN - Next Expected CmdSN from this Initiator + + ExpCmdSN is a Sequence Number that the target iSCSI returns to the + initiator to acknowledge command reception. It is used to update a + local variable with the same name. An ExpCmdSN equal to MaxCmdSN+1 + indicates that the target cannot accept new commands. + +10.4.11. MaxCmdSN - Maximum CmdSN from this Initiator + + MaxCmdSN is a Sequence Number that the target iSCSI returns to the + initiator to indicate the maximum CmdSN the initiator can send. It + is used to update a local variable with the same name. If MaxCmdSN + is equal to ExpCmdSN-1, this indicates to the initiator that the + target cannot receive any additional commands. When MaxCmdSN changes + at the target while the target has no pending PDUs to convey this + information to the initiator, it MUST generate a NOP-IN to carry the + new MaxCmdSN. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 128] + +RFC 3720 iSCSI April 2004 + + +10.5. Task Management Function Request + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|I| 0x02 |1| Function | Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| Logical Unit Number (LUN) or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Referenced Task Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 24| CmdSN | + +---------------+---------------+---------------+---------------+ + 28| ExpStatSN | + +---------------+---------------+---------------+---------------+ + 32| RefCmdSN or Reserved | + +---------------+---------------+---------------+---------------+ + 36| ExpDataSN or Reserved | + +---------------+---------------+---------------+---------------+ + 40/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + +10.5.1. Function + + The Task Management functions provide an initiator with a way to + explicitly control the execution of one or more Tasks (SCSI and iSCSI + tasks). The Task Management function codes are listed below. For a + more detailed description of SCSI task management, see [SAM2]. + + 1 - ABORT TASK - aborts the task identified by the Referenced Task + Tag field. + + 2 - ABORT TASK SET - aborts all Tasks issued via this session on the + logical unit. + + 3 - CLEAR ACA - clears the Auto Contingent Allegiance condition. + + + + + +Satran, et al. Standards Track [Page 129] + +RFC 3720 iSCSI April 2004 + + + 4 - CLEAR TASK SET - aborts all Tasks in the appropriate task set as + defined by the TST field in the Control mode page (see [SPC3]). + + 5 - LOGICAL UNIT RESET + + 6 - TARGET WARM RESET + + 7 - TARGET COLD RESET + + 8 - TASK REASSIGN - reassigns connection allegiance for the task + identified by the Referenced Task Tag field to this connection, + thus resuming the iSCSI exchanges for the task. + + For all these functions, the Task Management function response MUST + be returned as detailed in Section 10.6 Task Management Function + Response. All these functions apply to the referenced tasks + regardless of whether they are proper SCSI tasks or tagged iSCSI + operations. Task management requests must act on all the commands + from the same session having a CmdSN lower than the task management + CmdSN. LOGICAL UNIT RESET, TARGET WARM RESET and TARGET COLD RESET + may affect commands from other sessions or commands from the same + session with CmdSN equal or exceeding CmdSN. + + If the task management request is marked for immediate delivery, it + must be considered immediately for execution, but the operations + involved (all or part of them) may be postponed to allow the target + to receive all relevant tasks. According to [SAM2], for all the + tasks covered by the Task Management response (i.e., with CmdSN lower + than the task management command CmdSN) but except the Task + Management response to a TASK REASSIGN, additional responses MUST NOT + be delivered to the SCSI layer after the Task Management response. + The iSCSI initiator MAY deliver to the SCSI layer all responses + received before the Task Management response (i.e., it is a matter of + implementation if the SCSI responses, received before the Task + Management response but after the task management request was issued, + are delivered to the SCSI layer by the iSCSI layer in the initiator). + The iSCSI target MUST ensure that no responses for the tasks covered + by a task management function are delivered to the iSCSI initiator + after the Task Management response except for a task covered by a + TASK REASSIGN. + + For ABORT TASK SET and CLEAR TASK SET, the issuing initiator MUST + continue to respond to all valid target transfer tags (received via + R2T, Text Response, NOP-In, or SCSI Data-In PDUs) related to the + affected task set, even after issuing the task management request. + The issuing initiator SHOULD however terminate (i.e., by setting the + F-bit to 1) these response sequences as quickly as possible. The + target on its part MUST wait for responses on all affected target + + + +Satran, et al. Standards Track [Page 130] + +RFC 3720 iSCSI April 2004 + + + transfer tags before acting on either of these two task management + requests. In case all or part of the response sequence is not + received (due to digest errors) for a valid TTT, the target MAY treat + it as a case of within-command error recovery class (see Section + 6.1.4.1 Recovery Within-command) if it is supporting + ErrorRecoveryLevel >= 1, or alternatively may drop the connection to + complete the requested task set function. + + If an ABORT TASK is issued for a task created by an immediate command + then RefCmdSN MUST be that of the Task Management request itself + (i.e., CmdSN and RefCmdSN are equal); otherwise RefCmdSN MUST be set + to the CmdSN of the task to be aborted (lower than CmdSN). + + If the connection is still active (it is not undergoing an implicit + or explicit logout), ABORT TASK MUST be issued on the same connection + to which the task to be aborted is allegiant at the time the Task + Management Request is issued. If the connection is implicitly or + explicitly logged out (i.e., no other request will be issued on the + failing connection and no other response will be received on the + failing connection), then an ABORT TASK function request may be + issued on another connection. This Task Management request will then + establish a new allegiance for the command to be aborted as well as + abort it (i.e., the task to be aborted will not have to be retried or + reassigned, and its status, if issued but not acknowledged, will be + reissued followed by the Task Management response). + + At the target an ABORT TASK function MUST NOT be executed on a Task + Management request; such a request MUST result in Task Management + response of "Function rejected". + + For the LOGICAL UNIT RESET function, the target MUST behave as + dictated by the Logical Unit Reset function in [SAM2]. + + The implementation of the TARGET WARM RESET function and the TARGET + COLD RESET function is OPTIONAL and when implemented, should act as + described below. The TARGET WARM RESET is also subject to SCSI + access controls on the requesting initiator as defined in [SPC3]. + When authorization fails at the target, the appropriate response as + described in Section 10.6 Task Management Function Response MUST be + returned by the target. The TARGET COLD RESET function is not + subject to SCSI access controls, but its execution privileges may be + managed by iSCSI mechanisms such as login authentication. + + When executing the TARGET WARM RESET and TARGET COLD RESET functions, + the target cancels all pending operations on all Logical Units known + by the issuing initiator. Both functions are equivalent to the + Target Reset function specified by [SAM2]. They can affect many + other initiators logged in with the servicing SCSI target port. + + + +Satran, et al. Standards Track [Page 131] + +RFC 3720 iSCSI April 2004 + + + The target MUST treat the TARGET COLD RESET function additionally as + a power on event, thus terminating all of its TCP connections to all + initiators (all sessions are terminated). For this reason, the + Service Response (defined by [SAM2]) for this SCSI task management + function may not be reliably delivered to the issuing initiator port. + + For the TASK REASSIGN function, the target should reassign the + connection allegiance to this new connection (and thus resume iSCSI + exchanges for the task). TASK REASSIGN MUST ONLY be received by the + target after the connection on which the command was previously + executing has been successfully logged-out. The Task Management + response MUST be issued before the reassignment becomes effective. + For additional usage semantics see Section 6.2 Retry and Reassign in + Recovery. + + At the target a TASK REASSIGN function request MUST NOT be executed + to reassign the connection allegiance of a Task Management function + request, an active text negotiation task, or a Logout task; such a + request MUST result in Task Management response of "Function + rejected". + + TASK REASSIGN MUST be issued as an immediate command. + +10.5.2. TotalAHSLength and DataSegmentLength + + For this PDU TotalAHSLength and DataSegmentLength MUST be 0. + +10.5.3. LUN + + This field is required for functions that address a specific LU + (ABORT TASK, CLEAR TASK SET, ABORT TASK SET, CLEAR ACA, LOGICAL UNIT + RESET) and is reserved in all others. + +10.5.4. Referenced Task Tag + + The Initiator Task Tag of the task to be aborted for the ABORT TASK + function or reassigned for the TASK REASSIGN function. For all the + other functions this field MUST be set to the reserved value + 0xffffffff. + +10.5.5. RefCmdSN + + If an ABORT TASK is issued for a task created by an immediate command + then RefCmdSN MUST be that of the Task Management request itself + (i.e., CmdSN and RefCmdSN are equal). + + + + + + +Satran, et al. Standards Track [Page 132] + +RFC 3720 iSCSI April 2004 + + + For an ABORT TASK of a task created by non-immediate command RefCmdSN + MUST be set to the CmdSN of the task identified by the Referenced + Task Tag field. Targets must use this field as described in section + 10.6.1 when the task identified by the Referenced Task Tag field is + not with the target. + + Otherwise, this field is reserved. + +10.5.6. ExpDataSN + + For recovery purposes, the iSCSI target and initiator maintain a data + acknowledgement reference number - the first input DataSN number + unacknowledged by the initiator. When issuing a new command, this + number is set to 0. If the function is TASK REASSIGN, which + establishes a new connection allegiance for a previously issued Read + or Bidirectional command, ExpDataSN will contain an updated data + acknowledgement reference number or the value 0; the latter + indicating that the data acknowledgement reference number is + unchanged. The initiator MUST discard any data PDUs from the + previous execution that it did not acknowledge and the target MUST + transmit all Data-In PDUs (if any) starting with the data + acknowledgement reference number. The number of retransmitted PDUs + may or may not be the same as the original transmission depending on + if there was a change in MaxRecvDataSegmentLength in the + reassignment. The target MAY also send no more Data-In PDUs if all + data has been acknowledged. + + The value of ExpDataSN MUST be 0 or higher than the DataSN of the + last acknowledged Data-In PDU, but not larger than DataSN+1 of the + last Data-In PDU sent by the target. Any other value MUST be ignored + by the target. + + For other functions this field is reserved. + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 133] + +RFC 3720 iSCSI April 2004 + + +10.6. Task Management Function Response + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x22 |1| Reserved | Response | Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------------------------------------------------------+ + 8/ Reserved / + / / + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Reserved | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + For the functions ABORT TASK, ABORT TASK SET, CLEAR ACA, CLEAR TASK + SET, LOGICAL UNIT RESET, TARGET COLD RESET, TARGET WARM RESET and + TASK REASSIGN, the target performs the requested Task Management + function and sends a Task Management response back to the initiator. + For TASK REASSIGN, the new connection allegiance MUST ONLY become + effective at the target after the target issues the Task Management + Response. + +10.6.1. Response + + The target provides a Response, which may take on the following + values: + + a) 0 - Function complete. + b) 1 - Task does not exist. + c) 2 - LUN does not exist. + d) 3 - Task still allegiant. + e) 4 - Task allegiance reassignment not supported. + + + + +Satran, et al. Standards Track [Page 134] + +RFC 3720 iSCSI April 2004 + + + f) 5 - Task management function not supported. + g) 6 - Function authorization failed. + h) 255 - Function rejected. + + All other values are reserved. + + For a discussion on usage of response codes 3 and 4, see Section + 6.2.2 Allegiance Reassignment. + + For the TARGET COLD RESET and TARGET WARM RESET functions, the target + cancels all pending operations across all Logical Units known to the + issuing initiator. For the TARGET COLD RESET function, the target + MUST then close all of its TCP connections to all initiators + (terminates all sessions). + + The mapping of the response code into a SCSI service response code + value, if needed, is outside the scope of this document. However, in + symbolic terms Response values 0 and 1 map to the SCSI service + response of FUNCTION COMPLETE. All other Response values map to the + SCSI service response of FUNCTION REJECTED. If a Task Management + function response PDU does not arrive before the session is + terminated, the SCSI service response is SERVICE DELIVERY OR TARGET + FAILURE. + + The response to ABORT TASK SET and CLEAR TASK SET MUST only be issued + by the target after all of the commands affected have been received + by the target, the corresponding task management functions have been + executed by the SCSI target, and the delivery of all responses + delivered until the task management function completion have been + confirmed (acknowledged through ExpStatSN) by the initiator on all + connections of this session. For the exact timeline of events, refer + to Section 10.6.2 Task Management Actions on Task Sets. + + For the ABORT TASK function, + + a) If the Referenced Task Tag identifies a valid task leading to + a successful termination, then targets must return the + "Function complete" response. + b) If the Referenced Task Tag does not identify an existing task, + but if the CmdSN indicated by the RefCmdSN field in the Task + Management function request is within the valid CmdSN window + and less than the CmdSN of the Task Management function + request itself, then targets must consider the CmdSN received + and return the "Function complete" response. + + + + + + + +Satran, et al. Standards Track [Page 135] + +RFC 3720 iSCSI April 2004 + + + c) If the Referenced Task Tag does not identify an existing task + and if the CmdSN indicated by the RefCmdSN field in the Task + Management function request is outside the valid CmdSN window, + then targets must return the "Task does not exist" response. + +10.6.2. Task Management Actions on Task Sets + + The execution of ABORT TASK SET and CLEAR TASK SET Task Management + function requests consists of the following sequence of events in the + specified order on each of the entities. + + The initiator: + + a) Issues ABORT TASK SET/CLEAR TASK SET request. + b) Continues to respond to each target transfer tag received + for the affected task set. + c) Receives any responses for the tasks in the affected task + set (may process them as usual because they are guaranteed + to be valid). + d) Receives the task set management response, thus concluding + all the tasks in the affected task set. + + The target: + + a) Receives the ABORT TASK SET/CLEAR TASK SET request. + b) Waits for all target transfer tags to be responded to and + for all affected tasks in the task set to be received. + c) Propagates the command to and receives the response from the + target SCSI layer. + d) Takes note of last-sent StatSN on each of the connections in + the iSCSI sessions (one or more) sharing the affected task + set, and waits for acknowledgement of each StatSN (may + solicit for acknowledgement by way of a NOP-In). If some + tasks originate from non-iSCSI I_T_L nexi then the means by + which the target insures that all affected tasks have + returned their status to the initiator are defined by the + specific protocol. + + e) Sends the task set management response to the issuing + initiator. + + + + + + + + + + + +Satran, et al. Standards Track [Page 136] + +RFC 3720 iSCSI April 2004 + + +10.6.3. TotalAHSLength and DataSegmentLength + + For this PDU TotalAHSLength and DataSegmentLength MUST be 0. + +10.7. SCSI Data-Out & SCSI Data-In + + The SCSI Data-Out PDU for WRITE operations has the following format: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x05 |F| Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Target Transfer Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 24| Reserved | + +---------------+---------------+---------------+---------------+ + 28| ExpStatSN | + +---------------+---------------+---------------+---------------+ + 32| Reserved | + +---------------+---------------+---------------+---------------+ + 36| DataSN | + +---------------+---------------+---------------+---------------+ + 40| Buffer Offset | + +---------------+---------------+---------------+---------------+ + 44| Reserved | + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + / DataSegment / + +/ / + +---------------+---------------+---------------+---------------+ + | Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + + + + + + + +Satran, et al. Standards Track [Page 137] + +RFC 3720 iSCSI April 2004 + + + The SCSI Data-In PDU for READ operations has the following format: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x25 |F|A|0 0 0|O|U|S| Reserved |Status or Rsvd | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Target Transfer Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 24| StatSN or Reserved | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36| DataSN | + +---------------+---------------+---------------+---------------+ + 40| Buffer Offset | + +---------------+---------------+---------------+---------------+ + 44| Residual Count | + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + / DataSegment / + +/ / + +---------------+---------------+---------------+---------------+ + | Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + Status can accompany the last Data-In PDU if the command did not end + with an exception (i.e., the status is "good status" - GOOD, + CONDITION MET or INTERMEDIATE CONDITION MET). The presence of status + (and of a residual count) is signaled though the S flag bit. + Although targets MAY choose to send even non-exception status in + separate responses, initiators MUST support non-exception status in + Data-In PDUs. + + + + + + +Satran, et al. Standards Track [Page 138] + +RFC 3720 iSCSI April 2004 + + +10.7.1. F (Final) Bit + + For outgoing data, this bit is 1 for the last PDU of unsolicited data + or the last PDU of a sequence that answers an R2T. + + For incoming data, this bit is 1 for the last input (read) data PDU + of a sequence. Input can be split into several sequences, each + having its own F bit. Splitting the data stream into sequences does + not affect DataSN counting on Data-In PDUs. It MAY be used as a + "change direction" indication for Bidirectional operations that need + such a change. + + DataSegmentLength MUST not exceed MaxRecvDataSegmentLength for the + direction it is sent and the total of all the DataSegmentLength of + all PDUs in a sequence MUST not exceed MaxBurstLength (or + FirstBurstLength for unsolicited data). However the number of + individual PDUs in a sequence (or in total) may be higher than the + MaxBurstLength (or FirstBurstLength) to MaxRecvDataSegmentLength + ratio (as PDUs may be limited in length by the sender capabilities). + Using DataSegmentLength of 0 may increase beyond what is reasonable + for the number of PDUs and should therefore be avoided. + + For Bidirectional operations, the F bit is 1 for both the end of the + input sequences and the end of the output sequences. + +10.7.2. A (Acknowledge) Bit + + For sessions with ErrorRecoveryLevel 1 or higher, the target sets + this bit to 1 to indicate that it requests a positive acknowledgement + from the initiator for the data received. The target should use the + A bit moderately; it MAY only set the A bit to 1 once every + MaxBurstLength bytes, or on the last Data-In PDU that concludes the + entire requested read data transfer for the task from the target's + perspective, and it MUST NOT do so more frequently. The target MUST + NOT set to 1 the A bit for sessions with ErrorRecoveryLevel=0. The + initiator MUST ignore the A bit set to 1 for sessions with + ErrorRecoveryLevel=0. + + On receiving a Data-In PDU with the A bit set to 1 on a session with + ErrorRecoveryLevel greater than 0, if there are no holes in the read + data until that Data-In PDU, the initiator MUST issue a SNACK of type + DataACK except when it is able to acknowledge the status for the task + immediately via ExpStatSN on other outbound PDUs if the status for + the task is also received. In the latter case (acknowledgement + through ExpStatSN), sending a SNACK of type DataACK in response to + the A bit is OPTIONAL, but if it is done, it must not be sent after + the status acknowledgement through ExpStatSN. If the initiator has + detected holes in the read data prior to that Data-In PDU, it MUST + + + +Satran, et al. Standards Track [Page 139] + +RFC 3720 iSCSI April 2004 + + + postpone issuing the SNACK of type DataACK until the holes are + filled. An initiator also MUST NOT acknowledge the status for the + task before those holes are filled. A status acknowledgement for a + task that generated the Data-In PDUs is considered by the target as + an implicit acknowledgement of the Data-In PDUs if such an + acknowledgement was requested by the target. + +10.7.3. Flags (byte 1) + + The last SCSI Data packet sent from a target to an initiator for a + SCSI command that completed successfully (with a status of GOOD, + CONDITION MET, INTERMEDIATE or INTERMEDIATE CONDITION MET) may also + optionally contain the Status for the data transfer. As Sense Data + cannot be sent together with the Command Status, if the command is + completed with an error, then the response and sense data MUST be + sent in a SCSI Response PDU (i.e., MUST NOT be sent in a SCSI Data + packet). If Status is sent with the data, then a SCSI Response PDU + MUST NOT be sent as this would violate SCSI rules (a single status). + For Bidirectional commands, the status MUST be sent in a SCSI + Response PDU. + + bit 2-4 - Reserved. + + bit 5-6 - used the same as in a SCSI Response. These bits are + only valid when S is set to 1. For details see Section + 10.4.1 Flags (byte 1). + + bit 7 S (status)- set to indicate that the Command Status field + contains status. If this bit is set to 1, the F bit + MUST also be set to 1. + + The fields StatSN, Status, and Residual Count only have meaningful + content if the S bit is set to 1 and their values are defined in + Section 10.4 SCSI Response. + +10.7.4. Target Transfer Tag and LUN + + On outgoing data, the Target Transfer Tag is provided to the target + if the transfer is honoring an R2T. In this case, the Target + Transfer Tag field is a replica of the Target Transfer Tag provided + with the R2T. + + On incoming data, the Target Transfer Tag and LUN MUST be provided by + the target if the A bit is set to 1; otherwise they are reserved. + The Target Transfer Tag and LUN are copied by the initiator into the + SNACK of type DataACK that it issues as a result of receiving a SCSI + Data-In PDU with the A bit set to 1. + + + + +Satran, et al. Standards Track [Page 140] + +RFC 3720 iSCSI April 2004 + + + The Target Transfer Tag values are not specified by this protocol + except that the value 0xffffffff is reserved and means that the + Target Transfer Tag is not supplied. If the Target Transfer Tag is + provided, then the LUN field MUST hold a valid value and be + consistent with whatever was specified with the command; otherwise, + the LUN field is reserved. + +10.7.5. DataSN + + For input (read) or bidirectional Data-In PDUs, the DataSN is the + input PDU number within the data transfer for the command identified + by the Initiator Task Tag. + + R2T and Data-In PDUs, in the context of bidirectional commands, share + the numbering sequence (see Section 3.2.2.3 Data Sequencing). + + For output (write) data PDUs, the DataSN is the Data-Out PDU number + within the current output sequence. The current output sequence is + either identified by the Initiator Task Tag (for unsolicited data) or + is a data sequence generated for one R2T (for data solicited through + R2T). + +10.7.6. Buffer Offset + + The Buffer Offset field contains the offset of this PDU payload data + within the complete data transfer. The sum of the buffer offset and + length should not exceed the expected transfer length for the + command. + + The order of data PDUs within a sequence is determined by + DataPDUInOrder. When set to Yes, it means that PDUs have to be in + increasing Buffer Offset order and overlays are forbidden. + + The ordering between sequences is determined by DataSequenceInOrder. + When set to Yes, it means that sequences have to be in increasing + Buffer Offset order and overlays are forbidden. + +10.7.7. DataSegmentLength + + This is the data payload length of a SCSI Data-In or SCSI Data-Out + PDU. The sending of 0 length data segments should be avoided, but + initiators and targets MUST be able to properly receive 0 length data + segments. + + The Data Segments of Data-In and Data-Out PDUs SHOULD be filled to + the integer number of 4 byte words (real payload) unless the F bit is + set to 1. + + + + +Satran, et al. Standards Track [Page 141] + +RFC 3720 iSCSI April 2004 + + +10.8. Ready To Transfer (R2T) + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x31 |1| Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Target Transfer Tag | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36| R2TSN | + +---------------+---------------+---------------+---------------+ + 40| Buffer Offset | + +---------------+---------------+---------------+---------------+ + 44| Desired Data Transfer Length | + +---------------------------------------------------------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + When an initiator has submitted a SCSI Command with data that passes + from the initiator to the target (WRITE), the target may specify + which blocks of data it is ready to receive. The target may request + that the data blocks be delivered in whichever order is convenient + for the target at that particular instant. This information is + passed from the target to the initiator in the Ready To Transfer + (R2T) PDU. + + In order to allow write operations without an explicit initial R2T, + the initiator and target MUST have negotiated the key InitialR2T to + No during Login. + + An R2T MAY be answered with one or more SCSI Data-Out PDUs with a + matching Target Transfer Tag. If an R2T is answered with a single + Data-Out PDU, the Buffer Offset in the Data PDU MUST be the same as + + + +Satran, et al. Standards Track [Page 142] + +RFC 3720 iSCSI April 2004 + + + the one specified by the R2T, and the data length of the Data PDU + MUST be the same as the Desired Data Transfer Length specified in the + R2T. If the R2T is answered with a sequence of Data PDUs, the Buffer + Offset and Length MUST be within the range of those specified by R2T, + and the last PDU MUST have the F bit set to 1. If the last PDU + (marked with the F bit) is received before the Desired Data Transfer + Length is transferred, a target MAY choose to Reject that + + PDU with "Protocol error" reason code. DataPDUInOrder governs the + Data-Out PDU ordering. If DataPDUInOrder is set to Yes, the Buffer + Offsets and Lengths for consecutive PDUs MUST form a continuous + non-overlapping range and the PDUs MUST be sent in increasing offset + order. + + The target may send several R2T PDUs. It, therefore, can have a + number of pending data transfers. The number of outstanding R2T PDUs + are limited by the value of the negotiated key MaxOutstandingR2T. + Within a connection, outstanding R2Ts MUST be fulfilled by the + initiator in the order in which they were received. + + R2T PDUs MAY also be used to recover Data Out PDUs. Such an R2T + (Recovery-R2T) is generated by a target upon detecting the loss of + one or more Data-Out PDUs due to: + + - Digest error + - Sequence error + - Sequence reception timeout + + A Recovery-R2T carries the next unused R2TSN, but requests part of or + the entire data burst that an earlier R2T (with a lower R2TSN) had + already requested. + + DataSequenceInOrder governs the buffer offset ordering in consecutive + R2Ts. If DataSequenceInOrder is Yes, then consecutive R2Ts MUST + refer to continuous non-overlapping ranges except for Recovery-R2Ts. + +10.8.1. TotalAHSLength and DataSegmentLength + + For this PDU TotalAHSLength and DataSegmentLength MUST be 0. + +10.8.2. R2TSN + + R2TSN is the R2T PDU input PDU number within the command identified + by the Initiator Task Tag. + + For bidirectional commands R2T and Data-In PDUs share the input PDU + numbering sequence (see Section 3.2.2.3 Data Sequencing). + + + + +Satran, et al. Standards Track [Page 143] + +RFC 3720 iSCSI April 2004 + + +10.8.3. StatSN + + The StatSN field will contain the next StatSN. The StatSN for this + connection is not advanced after this PDU is sent. + +10.8.4. Desired Data Transfer Length and Buffer Offset + + The target specifies how many bytes it wants the initiator to send + because of this R2T PDU. The target may request the data from the + initiator in several chunks, not necessarily in the original order of + the data. The target, therefore, also specifies a Buffer Offset that + indicates the point at which the data transfer should begin, relative + to the beginning of the total data transfer. The Desired Data + Transfer Length MUST NOT be 0 and MUST not exceed MaxBurstLength. + +10.8.5. Target Transfer Tag + + The target assigns its own tag to each R2T request that it sends to + the initiator. This tag can be used by the target to easily identify + the data it receives. The Target Transfer Tag and LUN are copied in + the outgoing data PDUs and are only used by the target. There is no + protocol rule about the Target Transfer Tag except that the value + 0xffffffff is reserved and MUST NOT be sent by a target in an R2T. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 144] + +RFC 3720 iSCSI April 2004 + + +10.9. Asynchronous Message + + An Asynchronous Message may be sent from the target to the initiator + without correspondence to a particular command. The target specifies + the reason for the event and sense data. + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x32 |1| Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| 0xffffffff | + +---------------+---------------+---------------+---------------+ + 20| Reserved | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36| AsyncEvent | AsyncVCode | Parameter1 or Reserved | + +---------------+---------------+---------------+---------------+ + 40| Parameter2 or Reserved | Parameter3 or Reserved | + +---------------+---------------+---------------+---------------+ + 44| Reserved | + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + / DataSegment - Sense Data and iSCSI Event Data / + +/ / + +---------------+---------------+---------------+---------------+ + | Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + Some Asynchronous Messages are strictly related to iSCSI while others + are related to SCSI [SAM2]. + + StatSN counts this PDU as an acknowledgeable event (StatSN is + advanced), which allows for initiator and target state + synchronization. + + + +Satran, et al. Standards Track [Page 145] + +RFC 3720 iSCSI April 2004 + + +10.9.1. AsyncEvent + + The codes used for iSCSI Asynchronous Messages (events) are: + + 0 - a SCSI Asynchronous Event is reported in the sense data. + Sense Data that accompanies the report, in the data segment, + identifies the condition. The sending of a SCSI Event + (Asynchronous Event Reporting in SCSI terminology) is + dependent on the target support for SCSI asynchronous event + reporting (see [SAM2]) as indicated in the standard INQUIRY + data (see [SPC3]). Its use may be enabled by parameters in + the SCSI Control mode page (see [SPC3]). + + 1 - target requests Logout. This Async Message MUST be sent on + the same connection as the one requesting to be logged out. + The initiator MUST honor this request by issuing a Logout as + early as possible, but no later than Parameter3 seconds. + Initiator MUST send a Logout with a reason code of "Close the + connection" OR "Close the session" to close all the + connections. Once this message is received, the initiator + SHOULD NOT issue new iSCSI commands on the connection to be + logged out. The target MAY reject any new I/O requests that + it receives after this Message with the reason code "Waiting + for Logout". If the initiator does not Logout in Parameter3 + seconds, the target should send an Async PDU with iSCSI event + code "Dropped the connection" if possible, or simply terminate + the transport connection. Parameter1 and Parameter2 are + reserved. + + 2 - target indicates it will drop the connection. The Parameter1 + field indicates the CID of the connection that is going to be + dropped. + + The Parameter2 field (Time2Wait) indicates, in seconds, the + minimum time to wait before attempting to reconnect or + reassign. + + The Parameter3 field (Time2Retain) indicates the maximum time + allowed to reassign commands after the initial wait (in + Parameter2). + + If the initiator does not attempt to reconnect and/or reassign + the outstanding commands within the time specified by + Parameter3, or if Parameter3 is 0, the target will terminate + all outstanding commands on this connection. In this case, no + other responses should be expected from the target for the + outstanding commands on this connection. + + + + +Satran, et al. Standards Track [Page 146] + +RFC 3720 iSCSI April 2004 + + + A value of 0 for Parameter2 indicates that reconnect can be + attempted immediately. + + 3 - target indicates it will drop all the connections of this + session. + + Parameter1 field is reserved. + + The Parameter2 field (Time2Wait) indicates, in seconds, the + minimum time to wait before attempting to reconnect. The + Parameter3 field (Time2Retain) indicates the maximum time + allowed to reassign commands after the initial wait (in + Parameter2). + + If the initiator does not attempt to reconnect and/or reassign + the outstanding commands within the time specified by + Parameter3, or if Parameter3 is 0, the session is terminated. + + In this case, the target will terminate all outstanding + commands in this session; no other responses should be + expected from the target for the outstanding commands in this + session. A value of 0 for Parameter2 indicates that reconnect + can be attempted immediately. + + 4 - target requests parameter negotiation on this connection. The + initiator MUST honor this request by issuing a Text Request + (that can be empty) on the same connection as early as + possible, but no later than Parameter3 seconds, unless a Text + Request is already pending on the connection, or by issuing a + Logout Request. If the initiator does not issue a Text + Request the target may reissue the Asynchronous Message + requesting parameter negotiation. + + 255 - vendor specific iSCSI Event. The AsyncVCode details the + vendor code, and data MAY accompany the report. + + All other event codes are reserved. + +10.9.2. AsyncVCode + + AsyncVCode is a vendor specific detail code that is only valid if the + AsyncEvent field indicates a vendor specific event. Otherwise, it is + reserved. + +10.9.3. LUN + + The LUN field MUST be valid if AsyncEvent is 0. Otherwise, this + field is reserved. + + + +Satran, et al. Standards Track [Page 147] + +RFC 3720 iSCSI April 2004 + + +10.9.4. Sense Data and iSCSI Event Data + + For a SCSI event, this data accompanies the report in the data + segment and identifies the condition. + + For an iSCSI event, additional vendor-unique data MAY accompany the + Async event. Initiators MAY ignore the data when not understood + while processing the rest of the PDU. + + If the DataSegmentLength is not 0, the format of the DataSegment is + as follows: + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|SenseLength | Sense Data | + +---------------+---------------+---------------+---------------+ + x/ Sense Data / + +---------------+---------------+---------------+---------------+ + y/ iSCSI Event Data / + / / + +---------------+---------------+---------------+---------------+ + z| + +10.9.4.1. SenseLength + + This is the length of Sense Data. When the Sense Data field is empty + (e.g., the event is not a SCSI event) SenseLength is 0. + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 148] + +RFC 3720 iSCSI April 2004 + + +10.10. Text Request + + The Text Request is provided to allow for the exchange of information + and for future extensions. It permits the initiator to inform a + target of its capabilities or to request some special operations. + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|I| 0x04 |F|C| Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Target Transfer Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 24| CmdSN | + +---------------+---------------+---------------+---------------+ + 28| ExpStatSN | + +---------------+---------------+---------------+---------------+ + 32/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + / DataSegment (Text) / + +/ / + +---------------+---------------+---------------+---------------+ + | Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + An initiator MUST have at most one outstanding Text Request on a + connection at any given time. + + On a connection failure, an initiator must either explicitly abort + any active allegiant text negotiation task or must cause such a task + to be implicitly terminated by the target. + + + + + + + + +Satran, et al. Standards Track [Page 149] + +RFC 3720 iSCSI April 2004 + + +10.10.1. F (Final) Bit + + When set to 1, indicates that this is the last or only text request + in a sequence of Text Requests; otherwise, it indicates that more + Text Requests will follow. + +10.10.2. C (Continue) Bit + + When set to 1, indicates that the text (set of key=value pairs) in + this Text Request is not complete (it will be continued on subsequent + Text Requests); otherwise, it indicates that this Text Request ends a + set of key=value pairs. A Text Request with the C bit set to 1 MUST + have the F bit set to 0. + +10.10.3. Initiator Task Tag + + The initiator assigned identifier for this Text Request. If the + command is sent as part of a sequence of text requests and responses, + the Initiator Task Tag MUST be the same for all the requests within + the sequence (similar to linked SCSI commands). The I bit for all + requests in a sequence also MUST be the same. + +10.10.4. Target Transfer Tag + + When the Target Transfer Tag is set to the reserved value 0xffffffff, + it tells the target that this is a new request and the target resets + any internal state associated with the Initiator Task Tag (resets the + current negotiation state). + + The target sets the Target Transfer Tag in a text response to a value + other than the reserved value 0xffffffff whenever it indicates that + it has more data to send or more operations to perform that are + associated with the specified Initiator Task Tag. It MUST do so + whenever it sets the F bit to 0 in the response. By copying the + Target Transfer Tag from the response to the next Text Request, the + initiator tells the target to continue the operation for the specific + Initiator Task Tag. The initiator MUST ignore the Target Transfer + Tag in the Text Response when the F bit is set to 1. + + This mechanism allows the initiator and target to transfer a large + amount of textual data over a sequence of text-command/text-response + exchanges, or to perform extended negotiation sequences. + + If the Target Transfer Tag is not 0xffffffff, the LUN field MUST be + sent by the target in the Text Response. + + + + + + +Satran, et al. Standards Track [Page 150] + +RFC 3720 iSCSI April 2004 + + + A target MAY reset its internal negotiation state if an exchange is + stalled by the initiator for a long time or if it is running out of + resources. + + Long text responses are handled as in the following example: + + I->T Text SendTargets=All (F=1,TTT=0xffffffff) + T->I Text (F=0,TTT=0x12345678) + I->T Text (F=1, TTT=0x12345678) + T->I Text (F=0, TTT=0x12345678) + I->T Text (F=1, TTT=0x12345678) + ... + T->I Text (F=1, TTT=0xffffffff) + +10.10.5. Text + + The data lengths of a text request MUST NOT exceed the iSCSI target + MaxRecvDataSegmentLength (a per connection and per direction + negotiated parameter). The text format is specified in Section 5.2 + Text Mode Negotiation. + + Chapter 11 and Chapter 12 list some basic Text key=value pairs, some + of which can be used in Login Request/Response and some in Text + Request/Response. + + A key=value pair can span Text request or response boundaries. A + key=value pair can start in one PDU and continue on the next. In + other words the end of a PDU does not necessarily signal the end of a + key=value pair. + + The target responds by sending its response back to the initiator. + The response text format is similar to the request text format. The + text response MAY refer to key=value pairs presented in an earlier + text request and the text in the request may refer to earlier + responses. + + Chapter 5 details the rules for the Text Requests and Responses. + + Text operations are usually meant for parameter setting/ + negotiations, but can also be used to perform some long lasting + operations. + + Text operations that take a long time should be placed in their own + Text request. + + + + + + + +Satran, et al. Standards Track [Page 151] + +RFC 3720 iSCSI April 2004 + + +10.11. Text Response + + The Text Response PDU contains the target's responses to the + initiator's Text request. The format of the Text field matches that + of the Text request. + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x24 |F|C| Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Target Transfer Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + / DataSegment (Text) / + +/ / + +---------------+---------------+---------------+---------------+ + | Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + +10.11.1. F (Final) Bit + + When set to 1, in response to a Text Request with the Final bit set + to 1, the F bit indicates that the target has finished the whole + operation. Otherwise, if set to 0 in response to a Text Request with + the Final Bit set to 1, it indicates that the target has more work to + do (invites a follow-on text request). A Text Response with the F + bit set to 1 in response to a Text Request with the F bit set to 0 is + a protocol error. + + + +Satran, et al. Standards Track [Page 152] + +RFC 3720 iSCSI April 2004 + + + A Text Response with the F bit set to 1 MUST NOT contain key=value + pairs that may require additional answers from the initiator. + + A Text Response with the F bit set to 1 MUST have a Target Transfer + Tag field set to the reserved value of 0xffffffff. + + A Text Response with the F bit set to 0 MUST have a Target Transfer + Tag field set to a value other than the reserved 0xffffffff. + +10.11.2. C (Continue) Bit + + When set to 1, indicates that the text (set of key=value pairs) in + this Text Response is not complete (it will be continued on + subsequent Text Responses); otherwise, it indicates that this Text + Response ends a set of key=value pairs. A Text Response with the C + bit set to 1 MUST have the F bit set to 0. + +10.11.3. Initiator Task Tag + + The Initiator Task Tag matches the tag used in the initial Text + Request. + +10.11.4. Target Transfer Tag + + When a target has more work to do (e.g., cannot transfer all the + remaining text data in a single Text Response or has to continue the + negotiation) and has enough resources to proceed, it MUST set the + Target Transfer Tag to a value other than the reserved value of + 0xffffffff. Otherwise, the Target Transfer Tag MUST be set to + 0xffffffff. + + When the Target Transfer Tag is not 0xffffffff, the LUN field may be + significant. + + The initiator MUST copy the Target Transfer Tag and LUN in its next + request to indicate that it wants the rest of the data. + + When the target receives a Text Request with the Target Transfer Tag + set to the reserved value of 0xffffffff, it resets its internal + information (resets state) associated with the given Initiator Task + Tag (restarts the negotiation). + + When a target cannot finish the operation in a single Text Response, + and does not have enough resources to continue, it rejects the Text + Request with the appropriate Reject code. + + + + + + +Satran, et al. Standards Track [Page 153] + +RFC 3720 iSCSI April 2004 + + + A target may reset its internal state associated with an Initiator + Task Tag (the current negotiation state), state expressed through the + Target Transfer Tag if the initiator fails to continue the exchange + for some time. The target may reject subsequent Text Requests with + the Target Transfer Tag set to the "stale" value. + +10.11.5. StatSN + + The target StatSN variable is advanced by each Text Response sent. + +10.11.6. Text Response Data + + The data lengths of a text response MUST NOT exceed the iSCSI + initiator MaxRecvDataSegmentLength (a per connection and per + direction negotiated parameter). + + The text in the Text Response Data is governed by the same rules as + the text in the Text Request Data (see Section 10.10.5 Text). + + Although the initiator is the requesting party and controls the + request-response initiation and termination, the target can offer + key=value pairs of its own as part of a sequence and not only in + response to the initiator. + +10.12. Login Request + + After establishing a TCP connection between an initiator and a + target, the initiator MUST start a Login Phase to gain further access + to the target's resources. + + The Login Phase (see Chapter 5) consists of a sequence of Login + Requests and Responses that carry the same Initiator Task Tag. + + Login Requests are always considered as immediate. + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 154] + +RFC 3720 iSCSI April 2004 + + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|1| 0x03 |T|C|.|.|CSG|NSG| Version-max | Version-min | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| ISID | + + +---------------+---------------+ + 12| | TSIH | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| CID | Reserved | + +---------------+---------------+---------------+---------------+ + 24| CmdSN | + +---------------+---------------+---------------+---------------+ + 28| ExpStatSN or Reserved | + +---------------+---------------+---------------+---------------+ + 32| Reserved | + +---------------+---------------+---------------+---------------+ + 36| Reserved | + +---------------+---------------+---------------+---------------+ + 40/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48/ DataSegment - Login Parameters in Text request Format / + +/ / + +---------------+---------------+---------------+---------------+ + +10.12.1. T (Transit) Bit + + If set to 1, indicates that the initiator is ready to transit to the + next stage. + + If the T bit is set to 1 and NSG is FullFeaturePhase, then this also + indicates that the initiator is ready for the Final Login Response + (see Chapter 5). + +10.12.2. C (Continue) Bit + + When set to 1, indicates that the text (set of key=value pairs) in + this Login Request is not complete (it will be continued on + subsequent Login Requests); otherwise, it indicates that this Login + Request ends a set of key=value pairs. A Login Request with the C + bit set to 1 MUST have the T bit set to 0. + + + + +Satran, et al. Standards Track [Page 155] + +RFC 3720 iSCSI April 2004 + + +10.12.3. CSG and NSG + + Through these fields, Current Stage (CSG) and Next Stage (NSG), the + Login negotiation requests and responses are associated with a + specific stage in the session (SecurityNegotiation, + LoginOperationalNegotiation, FullFeaturePhase) and may indicate the + next stage to which they want to move (see Chapter 5). The next + stage value is only valid when the T bit is 1; otherwise, it is + reserved. + + The stage codes are: + + - 0 - SecurityNegotiation + - 1 - LoginOperationalNegotiation + - 3 - FullFeaturePhase + + All other codes are reserved. + +10.12.4. Version + + The version number of the current draft is 0x00. As such, all + devices MUST carry version 0x00 for both Version-min and Version-max. + +10.12.4.1. Version-max + + Maximum Version number supported. + + All Login Requests within the Login Phase MUST carry the same + Version-max. + + The target MUST use the value presented with the first Login Request. + +10.12.4.2. Version-min + + All Login Requests within the Login Phase MUST carry the same + Version-min. The target MUST use the value presented with the first + Login Request. + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 156] + +RFC 3720 iSCSI April 2004 + + +10.12.5. ISID + + This is an initiator-defined component of the session identifier and + is structured as follows (see [RFC3721] and Section 9.1.1 + Conservative Reuse of ISIDs for details): + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 8| T | A | B | C | + +---------------+---------------+---------------+---------------+ + 12| D | + +---------------+---------------+ + + The T field identifies the format and usage of A, B, C, and D as + indicated below: + + T + + 00b OUI-Format + A&B are a 22 bit OUI + (the I/G & U/L bits are omitted) + C&D 24 bit qualifier + 01b EN - Format (IANA Enterprise Number) + A - Reserved + B&C EN (IANA Enterprise Number) + D - Qualifier + 10b "Random" + A - Reserved + B&C Random + D - Qualifier + 11b A,B,C&D Reserved + + For the T field values 00b and 01b, a combination of A and B (for + 00b) or B and C (for 01b) identifies the vendor or organization whose + component (software or hardware) generates this ISID. A vendor or + organization with one or more OUIs, or one or more Enterprise + Numbers, MUST use at least one of these numbers and select the + appropriate value for the T field when its components generate ISIDs. + An OUI or EN MUST be set in the corresponding fields in network byte + order (byte big-endian). + + If the T field is 10b, B and C are set to a random 24-bit unsigned + integer value in network byte order (byte big-endian). See [RFC3721] + for how this affects the principle of "conservative reuse". + + + + + +Satran, et al. Standards Track [Page 157] + +RFC 3720 iSCSI April 2004 + + + The Qualifier field is a 16 or 24-bit unsigned integer value that + provides a range of possible values for the ISID within the selected + namespace. It may be set to any value within the constraints + specified in the iSCSI protocol (see Section 3.4.3 Consequences of + the Model and Section 9.1.1 Conservative Reuse of ISIDs). + + The T field value of 11b is reserved. + + If the ISID is derived from something assigned to a hardware adapter + or interface by a vendor, as a preset default value, it MUST be + configurable to a value assigned according to the SCSI port behavior + desired by the system in which it is installed (see Section 9.1.1 + Conservative Reuse of ISIDs and Section 9.1.2 iSCSI Name, ISID, and + TPGT Use). The resultant ISID MUST also be persistent over power + cycles, reboot, card swap, etc. + +10.12.6. TSIH + + TSIH must be set in the first Login Request. The reserved value 0 + MUST be used on the first connection for a new session. Otherwise, + the TSIH sent by the target at the conclusion of the successful login + of the first connection for this session MUST be used. The TSIH + identifies to the target the associated existing session for this new + connection. + + All Login Requests within a Login Phase MUST carry the same TSIH. + + The target MUST check the value presented with the first Login + Request and act as specified in Section 5.3.1 Login Phase Start. + +10.12.7. Connection ID - CID + + A unique ID for this connection within the session. + + All Login Requests within the Login Phase MUST carry the same CID. + + The target MUST use the value presented with the first Login Request. + + A Login Request with a non-zero TSIH and a CID equal to that of an + existing connection implies a logout of the connection followed by a + Login (see Section 5.3.4 Connection Reinstatement). For the details + of the implicit Logout Request, see Section 10.14 Logout Request. + + + + + + + + + +Satran, et al. Standards Track [Page 158] + +RFC 3720 iSCSI April 2004 + + +10.12.8. CmdSN + + CmdSN is either the initial command sequence number of a session (for + the first Login Request of a session - the "leading" login), or the + command sequence number in the command stream if the login is for a + new connection in an existing session. + + Examples: + + - Login on a leading connection - if the leading login carries + the CmdSN 123, all other Login Requests in the same Login Phase + carry the CmdSN 123 and the first non-immediate command in + FullFeaturePhase also carries the CmdSN 123. + + - Login on other than a leading connection - if the current CmdSN + at the time the first login on the connection is issued is 500, + then that PDU carries CmdSN=500. Subsequent Login Requests + that are needed to complete this Login Phase may carry a CmdSN + higher than 500 if non-immediate requests that were issued on + other connections in the same session advance CmdSN. + + If the Login Request is a leading Login Request, the target MUST use + the value presented in CmdSN as the target value for ExpCmdSN. + +10.12.9. ExpStatSN + + For the first Login Request on a connection this is ExpStatSN for the + old connection and this field is only valid if the Login Request + restarts a connection (see Section 5.3.4 Connection Reinstatement). + + For subsequent Login Requests it is used to acknowledge the Login + Responses with their increasing StatSN values. + +10.12.10. Login Parameters + + The initiator MUST provide some basic parameters in order to enable + the target to determine if the initiator may use the target's + resources and the initial text parameters for the security exchange. + + All the rules specified in Section 10.10.5 Text for text requests + also hold for Login Requests. Keys and their explanations are listed + in Chapter 11 (security negotiation keys) and Chapter 12 (operational + parameter negotiation keys). All keys in Chapter 12, except for the + X extension formats, MUST be supported by iSCSI initiators and + targets. Keys in Chapter 11 only need to be supported when the + function to which they refer is mandatory to implement. + + + + + +Satran, et al. Standards Track [Page 159] + +RFC 3720 iSCSI April 2004 + + +10.13. Login Response + + The Login Response indicates the progress and/or end of the Login + Phase. + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x23 |T|C|.|.|CSG|NSG| Version-max | Version-active| + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| ISID | + + +---------------+---------------+ + 12| | TSIH | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Reserved | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36| Status-Class | Status-Detail | Reserved | + +---------------+---------------+---------------+---------------+ + 40/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48/ DataSegment - Login Parameters in Text request Format / + +/ / + +---------------+---------------+---------------+---------------+ + +10.13.1. Version-max + + This is the highest version number supported by the target. + + All Login Responses within the Login Phase MUST carry the same + Version-max. + + The initiator MUST use the value presented as a response to the first + Login Request. + + + + + + +Satran, et al. Standards Track [Page 160] + +RFC 3720 iSCSI April 2004 + + +10.13.2. Version-active + + Indicates the highest version supported by the target and initiator. + If the target does not support a version within the range specified + by the initiator, the target rejects the login and this field + indicates the lowest version supported by the target. + + All Login Responses within the Login Phase MUST carry the same + Version-active. + + The initiator MUST use the value presented as a response to the first + Login Request. + +10.13.3. TSIH + + The TSIH is the target assigned session identifying handle. Its + internal format and content are not defined by this protocol except + for the value 0 that is reserved. With the exception of the Login + Final-Response in a new session, this field should be set to the TSIH + provided by the initiator in the Login Request. For a new session, + the target MUST generate a non-zero TSIH and ONLY return it in the + Login Final-Response (see Section 5.3 Login Phase). + +10.13.4. StatSN + + For the first Login Response (the response to the first Login + Request), this is the starting status Sequence Number for the + connection. The next response of any kind, including the next Login + Response, if any, in the same Login Phase, will carry this number + + 1. This field is only valid if the Status-Class is 0. + +10.13.5. Status-Class and Status-Detail + + The Status returned in a Login Response indicates the execution + status of the Login Phase. The status includes: + + Status-Class + Status-Detail + + 0 Status-Class indicates success. + + A non-zero Status-Class indicates an exception. In this case, + Status-Class is sufficient for a simple initiator to use when + handling exceptions, without having to look at the Status-Detail. + The Status-Detail allows finer-grained exception handling for more + sophisticated initiators and for better information for logging. + + + + + +Satran, et al. Standards Track [Page 161] + +RFC 3720 iSCSI April 2004 + + + The status classes are as follows: + + 0 - Success - indicates that the iSCSI target successfully + received, understood, and accepted the request. The numbering + fields (StatSN, ExpCmdSN, MaxCmdSN) are only valid if + Status-Class is 0. + + 1 - Redirection - indicates that the initiator must take further + action to complete the request. This is usually due to the + target moving to a different address. All of the redirection + status class responses MUST return one or more text key + parameters of the type "TargetAddress", which indicates the + target's new address. A redirection response MAY be issued by + a target prior or after completing a security negotiation if a + security negotiation is required. A redirection SHOULD be + accepted by an initiator even without having the target + complete a security negotiation if any security negotiation is + required, and MUST be accepted by the initiator after the + completion of the security negotiation if any security + negotiation is required. + + 2 - Initiator Error (not a format error) - indicates that the + initiator most likely caused the error. This MAY be due to a + request for a resource for which the initiator does not have + permission. The request should not be tried again. + + 3 - Target Error - indicates that the target sees no errors in the + initiator's Login Request, but is currently incapable of + fulfilling the request. The initiator may re-try the same + Login Request later. + + The table below shows all of the currently allocated status codes. + The codes are in hexadecimal; the first byte is the status class and + the second byte is the status detail. + + ----------------------------------------------------------------- + Status | Code | Description + |(hex) | + ----------------------------------------------------------------- + Success | 0000 | Login is proceeding OK (*1). + ----------------------------------------------------------------- + Target moved | 0101 | The requested iSCSI Target Name (ITN) + temporarily | | has temporarily moved + | | to the address provided. + ----------------------------------------------------------------- + Target moved | 0102 | The requested ITN has permanently moved + permanently | | to the address provided. + ----------------------------------------------------------------- + + + +Satran, et al. Standards Track [Page 162] + +RFC 3720 iSCSI April 2004 + + + Initiator | 0200 | Miscellaneous iSCSI initiator + error | | errors. + ---------------------------------------------------------------- + Authentication| 0201 | The initiator could not be + failure | | successfully authenticated or target + | | authentication is not supported. + ----------------------------------------------------------------- + Authorization | 0202 | The initiator is not allowed access + failure | | to the given target. + ----------------------------------------------------------------- + Not found | 0203 | The requested ITN does not + | | exist at this address. + ----------------------------------------------------------------- + Target removed| 0204 | The requested ITN has been removed and + | |no forwarding address is provided. + ----------------------------------------------------------------- + Unsupported | 0205 | The requested iSCSI version range is + version | | not supported by the target. + ----------------------------------------------------------------- + Too many | 0206 | Too many connections on this SSID. + connections | | + ----------------------------------------------------------------- + Missing | 0207 | Missing parameters (e.g., iSCSI + parameter | | Initiator and/or Target Name). + ----------------------------------------------------------------- + Can't include | 0208 | Target does not support session + in session | | spanning to this connection (address). + ----------------------------------------------------------------- + Session type | 0209 | Target does not support this type of + not supported | | of session or not from this Initiator. + ----------------------------------------------------------------- + Session does | 020a | Attempt to add a connection + not exist | | to a non-existent session. + ----------------------------------------------------------------- + Invalid during| 020b | Invalid Request type during Login. + login | | + ----------------------------------------------------------------- + Target error | 0300 | Target hardware or software error. + ----------------------------------------------------------------- + Service | 0301 | The iSCSI service or target is not + unavailable | | currently operational. + ----------------------------------------------------------------- + Out of | 0302 | The target has insufficient session, + resources | | connection, or other resources. + ----------------------------------------------------------------- + + + + + + +Satran, et al. Standards Track [Page 163] + +RFC 3720 iSCSI April 2004 + + + (*1) If the response T bit is 1 in both the request and the matching + response, and the NSG is FullFeaturePhase in both the request and the + matching response, the Login Phase is finished and the initiator may + proceed to issue SCSI commands. + + If the Status Class is not 0, the initiator and target MUST close the + TCP connection. + + If the target wishes to reject the Login Request for more than one + reason, it should return the primary reason for the rejection. + +10.13.6. T (Transit) bit + + The T bit is set to 1 as an indicator of the end of the stage. If + the T bit is set to 1 and NSG is FullFeaturePhase, then this is also + the Final Login Response (see Chapter 5). A T bit of 0 indicates a + "partial" response, which means "more negotiation needed". + + A Login Response with a T bit set to 1 MUST NOT contain key=value + pairs that may require additional answers from the initiator within + the same stage. + + If the status class is 0, the T bit MUST NOT be set to 1 if the T bit + in the request was set to 0. + +10.13.7. C (Continue) Bit + + When set to 1, indicates that the text (set of key=value pairs) in + this Login Response is not complete (it will be continued on + subsequent Login Responses); otherwise, it indicates that this Login + Response ends a set of key=value pairs. A Login Response with the C + bit set to 1 MUST have the T bit set to 0. + +10.13.8. Login Parameters + + The target MUST provide some basic parameters in order to enable the + initiator to determine if it is connected to the correct port and the + initial text parameters for the security exchange. + + All the rules specified in Section 10.11.6 Text Response Data for + text responses also hold for Login Responses. Keys and their + explanations are listed in Chapter 11 (security negotiation keys) and + Chapter 12 (operational parameter negotiation keys). All keys in + Chapter 12, except for the X extension formats, MUST be supported by + iSCSI initiators and targets. Keys in Chapter 11, only need to be + supported when the function to which they refer is mandatory to + implement. + + + + +Satran, et al. Standards Track [Page 164] + +RFC 3720 iSCSI April 2004 + + +10.14. Logout Request + + The Logout Request is used to perform a controlled closing of a + connection. + + An initiator MAY use a Logout Request to remove a connection from a + session or to close an entire session. + + After sending the Logout Request PDU, an initiator MUST NOT send any + new iSCSI requests on the closing connection. If the Logout Request + is intended to close the session, new iSCSI requests MUST NOT be sent + on any of the connections participating in the session. + + When receiving a Logout Request with the reason code of "close the + connection" or "close the session", the target MUST terminate all + pending commands, whether acknowledged via ExpCmdSN or not, on that + connection or session respectively. + + When receiving a Logout Request with the reason code "remove + connection for recovery", the target MUST discard all requests not + yet acknowledged via ExpCmdSN that were issued on the specified + connection, and suspend all data/status/R2T transfers on behalf of + pending commands on the specified connection. + + The target then issues the Logout Response and half-closes the TCP + connection (sends FIN). After receiving the Logout Response and + attempting to receive the FIN (if still possible), the initiator MUST + completely close the logging-out connection. For the terminated + commands, no additional responses should be expected. + + A Logout for a CID may be performed on a different transport + connection when the TCP connection for the CID has already been + terminated. In such a case, only a logical "closing" of the iSCSI + connection for the CID is implied with a Logout. + + All commands that were not terminated or not completed (with status) + and acknowledged when the connection is closed completely can be + reassigned to a new connection if the target supports connection + recovery. + + If an initiator intends to start recovery for a failing connection, + it MUST use the Logout Request to "clean-up" the target end of a + failing connection and enable recovery to start, or the Login Request + with a non-zero TSIH and the same CID on a new connection for the + same effect (see Section 10.14.3 CID). In sessions with a single + connection, the connection can be closed and then a new connection + reopened. A connection reinstatement login can be used for recovery + (see Section 5.3.4 Connection Reinstatement). + + + +Satran, et al. Standards Track [Page 165] + +RFC 3720 iSCSI April 2004 + + + A successful completion of a Logout Request with the reason code of + "close the connection" or "remove the connection for recovery" + results at the target in the discarding of unacknowledged commands + received on the connection being logged out. These are commands that + have arrived on the connection being logged out, but have not been + delivered to SCSI because one or more commands with a smaller CmdSN + has not been received by iSCSI. See Section 3.2.2.1 Command + Numbering and Acknowledging. The resulting holes the in command + sequence numbers will have to be handled by appropriate recovery (see + Chapter 6) unless the session is also closed. + + The entire logout discussion in this section is also applicable for + an implicit Logout realized via a connection reinstatement or session + reinstatement. When a Login Request performs an implicit Logout, the + implicit Logout is performed as if having the reason codes specified + below: + + Reason code Type of implicit Logout + ------------------------------------------- + 0 session reinstatement + 1 connection reinstatement when + the operational ErrorRecoveryLevel < 2 + 2 connection reinstatement when + the operational ErrorRecoveryLevel = 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 166] + +RFC 3720 iSCSI April 2004 + + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|I| 0x06 |1| Reason Code | Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------------------------------------------------------+ + 8/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| CID or Reserved | Reserved | + +---------------+---------------+---------------+---------------+ + 24| CmdSN | + +---------------+---------------+---------------+---------------+ + 28| ExpStatSN | + +---------------+---------------+---------------+---------------+ + 32/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + +10.14.1. Reason Code + + Reason Code indicates the reason for Logout as follows: + + 0 - close the session. All commands associated with the session + (if any) are terminated. + + 1 - close the connection. All commands associated with connection + (if any) are terminated. + + 2 - remove the connection for recovery. Connection is closed and + all commands associated with it, if any, are to be prepared + for a new allegiance. + + All other values are reserved. + + + + + + + + + + + +Satran, et al. Standards Track [Page 167] + +RFC 3720 iSCSI April 2004 + + +10.14.2. TotalAHSLength and DataSegmentLength + + For this PDU TotalAHSLength and DataSegmentLength MUST be 0. + +10.14.3. CID + + This is the connection ID of the connection to be closed (including + closing the TCP stream). This field is only valid if the reason code + is not "close the session". + +10.14.4. ExpStatSN + + This is the last ExpStatSN value for the connection to be closed. + +10.14.5. Implicit termination of tasks + + A target implicitly terminates the active tasks due to the iSCSI + protocol in the following cases: + + a) When a connection is implicitly or explicitly logged out with + the reason code of "Close the connection" and there are active + tasks allegiant to that connection. + + b) When a connection fails and eventually the connection state + times out (state transition M1 in Section 7.2.2 State + Transition Descriptions for Initiators and Targets) and there + are active tasks allegiant to that connection. + + c) When a successful recovery Logout is performed while there are + active tasks allegiant to that connection, and those tasks + eventually time out after the Time2Wait and Time2Retain + periods without allegiance reassignment. + + d) When a connection is implicitly or explicitly logged out with + the reason code of "Close the session" and there are active + tasks in that session. + + If the tasks terminated in any of the above cases are SCSI tasks, + they must be internally terminated as if with CHECK CONDITION status. + This status is only meaningful for appropriately handling the + internal SCSI state and SCSI side effects with respect to ordering + because this status is never communicated back as a terminating + status to the initiator. However additional actions may have to be + taken at SCSI level depending on the SCSI context as defined by the + SCSI standards (e.g., queued commands and ACA, in cases a), b), and + c), after the tasks are terminated, the target MUST report a Unit + Attention condition on the next command processed on any connection + for each affected I_T_L nexus with the status of CHECK CONDITION, and + + + +Satran, et al. Standards Track [Page 168] + +RFC 3720 iSCSI April 2004 + + + the ASC/ASCQ value of 47h/7Fh - "SOME COMMANDS CLEARED BY ISCSI + PROTOCOL EVENT" - etc. - see [SAM2] and [SPC3]). + +10.15. Logout Response + + The Logout Response is used by the target to indicate if the cleanup + operation for the connection(s) has completed. + + After Logout, the TCP connection referred by the CID MUST be closed + at both ends (or all connections must be closed if the logout reason + was session close). + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x26 |1| Reserved | Response | Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------------------------------------------------------+ + 8/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag | + +---------------+---------------+---------------+---------------+ + 20| Reserved | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36| Reserved | + +---------------------------------------------------------------+ + 40| Time2Wait | Time2Retain | + +---------------+---------------+---------------+---------------+ + 44| Reserved | + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + + + + + + + + + +Satran, et al. Standards Track [Page 169] + +RFC 3720 iSCSI April 2004 + + +10.15.1. Response + + Logout Response: + + 0 - connection or session closed successfully. + + 1 - CID not found. + + 2 - connection recovery is not supported. If Logout reason code + was recovery and target does not support it as indicated by the + ErrorRecoveryLevel. + + 3 - cleanup failed for various reasons. + +10.15.2. TotalAHSLength and DataSegmentLength + + For this PDU TotalAHSLength and DataSegmentLength MUST be 0. + +10.15.3. Time2Wait + + If the Logout Response code is 0 and if the operational + ErrorRecoveryLevel is 2, this is the minimum amount of time, in + seconds, to wait before attempting task reassignment. If the Logout + Response code is 0 and if the operational ErrorRecoveryLevel is less + than 2, this field is to be ignored. + + This field is invalid if the Logout Response code is 1. + + If the Logout response code is 2 or 3, this field specifies the + minimum time to wait before attempting a new implicit or explicit + logout. + + If Time2Wait is 0, the reassignment or a new Logout may be attempted + immediately. + +10.15.4. Time2Retain + + If the Logout response code is 0 and if the operational + ErrorRecoveryLevel is 2, this is the maximum amount of time, in + seconds, after the initial wait (Time2Wait), the target waits for the + allegiance reassignment for any active task after which the task + state is discarded. If the Logout response code is 0 and if the + operational ErrorRecoveryLevel is less than 2, this field is to be + ignored. + + This field is invalid if the Logout response code is 1. + + + + + +Satran, et al. Standards Track [Page 170] + +RFC 3720 iSCSI April 2004 + + + If the Logout response code is 2 or 3, this field specifies the + maximum amount of time, in seconds, after the initial wait + (Time2Wait), the target waits for a new implicit or explicit logout. + + If it is the last connection of a session, the whole session state is + discarded after Time2Retain. + + If Time2Retain is 0, the target has already discarded the connection + (and possibly the session) state along with the task states. No + reassignment or Logout is required in this case. + +10.16. SNACK Request + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x10 |1|.|.|.| Type | Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 20| Target Transfer Tag or SNACK Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 24| Reserved | + +---------------+---------------+---------------+---------------+ + 28| ExpStatSN | + +---------------+---------------+---------------+---------------+ + 32/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 40| BegRun | + +---------------------------------------------------------------+ + 44| RunLength | + +---------------------------------------------------------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + If the implementation supports ErrorRecoveryLevel greater than zero, + it MUST support all SNACK types. + + + + + + +Satran, et al. Standards Track [Page 171] + +RFC 3720 iSCSI April 2004 + + + The SNACK is used by the initiator to request the retransmission of + numbered-responses, data, or R2T PDUs from the target. The SNACK + request indicates the numbered-responses or data "runs" whose + retransmission is requested by the target, where the run starts with + the first StatSN, DataSN, or R2TSN whose retransmission is requested + and indicates the number of Status, Data, or R2T PDUs requested + including the first. 0 has special meaning when used as a starting + number and length: + + - When used in RunLength, it means all PDUs starting with the + initial. + - When used in both BegRun and RunLength, it means all + unacknowledged PDUs. + + The numbered-response(s) or R2T(s), requested by a SNACK, MUST be + delivered as exact replicas of the ones that the target transmitted + originally except for the fields ExpCmdSN, MaxCmdSN, and ExpDataSN, + which MUST carry the current values. R2T(s)requested by SNACK MUST + also carry the current value of StatSN. + + The numbered Data-In PDUs, requested by a Data SNACK MUST be + delivered as exact replicas of the ones that the target transmitted + originally except for the fields ExpCmdSN and MaxCmdSN, which MUST + carry the current values and except for resegmentation (see Section + 10.16.3 Resegmentation). + + Any SNACK that requests a numbered-response, Data, or R2T that was + not sent by the target or was already acknowledged by the initiator, + MUST be rejected with a reason code of "Protocol error". + +10.16.1. Type + + This field encodes the SNACK function as follows: + + 0-Data/R2T SNACK - requesting retransmission of one or more Data- + In or R2T PDUs. + + 1-Status SNACK - requesting retransmission of one or more numbered + responses. + + 2-DataACK - positively acknowledges Data-In PDUs. + + 3-R-Data SNACK - requesting retransmission of Data-In PDUs with + possible resegmentation and status tagging. + + + + + + + +Satran, et al. Standards Track [Page 172] + +RFC 3720 iSCSI April 2004 + + + All other values are reserved. + + Data/R2T SNACK, Status SNACK, or R-Data SNACK for a command MUST + precede status acknowledgement for the given command. + +10.16.2. Data Acknowledgement + + If an initiator operates at ErrorRecoveryLevel 1 or higher, it MUST + issue a SNACK of type DataACK after receiving a Data-In PDU with the + A bit set to 1. However, if the initiator has detected holes in the + input sequence, it MUST postpone issuing the SNACK of type DataACK + until the holes are filled. An initiator MAY ignore the A bit if it + deems that the bit is being set aggressively by the target (i.e., + before the MaxBurstLength limit is reached). + + The DataACK is used to free resources at the target and not to + request or imply data retransmission. + + An initiator MUST NOT request retransmission for any data it had + already acknowledged. + +10.16.3. Resegmentation + + If the initiator MaxRecvDataSegmentLength changed between the + original transmission and the time the initiator requests + retransmission, the initiator MUST issue a R-Data SNACK (see Section + 10.16.1 Type). With R-Data SNACK, the initiator indicates that it + discards all the unacknowledged data and expects the target to resend + it. It also expects resegmentation. In this case, the retransmitted + Data-In PDUs MAY be different from the ones originally sent in order + to reflect changes in MaxRecvDataSegmentLength. Their DataSN starts + with the BegRun of the last DataACK received by the target if any was + received; otherwise it starts with 0 and is increased by 1 for each + resent Data-In PDU. + + A target that has received a R-Data SNACK MUST return a SCSI Response + that contains a copy of the SNACK Tag field from the R-Data SNACK in + the SCSI Response SNACK Tag field as its last or only Response. For + example, if it has already sent a response containing another value + in the SNACK Tag field or had the status included in the last Data-In + PDU, it must send a new SCSI Response PDU. If a target sends more + than one SCSI Response PDU due to this rule, all SCSI responses must + carry the same StatSN (see Section 10.4.4 SNACK Tag). If an + initiator attempts to recover a lost SCSI Response (with a + Status SNACK, see Section 10.16.1 Type) when more than one response + has been sent, the target will send the SCSI Response with the latest + content known to the target, including the last SNACK Tag for the + command. + + + +Satran, et al. Standards Track [Page 173] + +RFC 3720 iSCSI April 2004 + + + For considerations in allegiance reassignment of a task to a + connection with a different MaxRecvDataSegmentLength, refer to + Section 6.2.2 Allegiance Reassignment. + +10.16.4. Initiator Task Tag + + For Status SNACK and DataACK, the Initiator Task Tag MUST be set to + the reserved value 0xffffffff. In all other cases, the Initiator + Task Tag field MUST be set to the Initiator Task Tag of the + referenced command. + +10.16.5. Target Transfer Tag or SNACK Tag + + For an R-Data SNACK, this field MUST contain a value that is + different from 0 or 0xffffffff and is unique for the task (identified + by the Initiator Task Tag). This value MUST be copied by the iSCSI + target in the last or only SCSI Response PDU it issues for the + command. + + For DataACK, the Target Transfer Tag MUST contain a copy of the + Target Transfer Tag and LUN provided with the SCSI Data-In PDU with + the A bit set to 1. + + In all other cases, the Target Transfer Tag field MUST be set to the + reserved value of 0xffffffff. + +10.16.6. BegRun + + The DataSN, R2TSN, or StatSN of the first PDU whose retransmission is + requested (Data/R2T and Status SNACK), or the next expected DataSN + (DataACK SNACK). + + BegRun 0 when used in conjunction with RunLength 0 means resend all + unacknowledged Data-In, R2T or Response PDUs. + + BegRun MUST be 0 for a R-Data SNACK. + +10.16.7. RunLength + + The number of PDUs whose retransmission is requested. + + RunLength 0 signals that all Data-In, R2T, or Response PDUs carrying + the numbers equal to or greater than BegRun have to be resent. + + The RunLength MUST also be 0 for a DataACK SNACK in addition to + R-Data SNACK. + + + + + +Satran, et al. Standards Track [Page 174] + +RFC 3720 iSCSI April 2004 + + +10.17. Reject + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x3f |1| Reserved | Reason | Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 16| 0xffffffff | + +---------------+---------------+---------------+---------------+ + 20| Reserved | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36| DataSN/R2TSN or Reserved | + +---------------+---------------+---------------+---------------+ + 40| Reserved | + +---------------+---------------+---------------+---------------+ + 44| Reserved | + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + xx/ Complete Header of Bad PDU / + +/ / + +---------------+---------------+---------------+---------------+ + yy/Vendor specific data (if any) / + / / + +---------------+---------------+---------------+---------------+ + zz| Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + Reject is used to indicate an iSCSI error condition (protocol, + unsupported option, etc.). + + + + + + + + + +Satran, et al. Standards Track [Page 175] + +RFC 3720 iSCSI April 2004 + + +10.17.1. Reason + + The reject Reason is coded as follows: + + +------+----------------------------------------+------------------+ + | Code | Explanation | Can the original | + | (hex)| | PDU be re-sent? | + +------+----------------------------------------+------------------+ + | 0x01 | Reserved | no | + | | | | + | 0x02 | Data (payload) Digest Error | yes (Note 1) | + | | | | + | 0x03 | SNACK Reject | yes | + | | | | + | 0x04 | Protocol Error (e.g., SNACK request for| no | + | | a status that was already acknowledged)| | + | | | | + | 0x05 | Command not supported | no | + | | | | + | 0x06 | Immediate Command Reject - too many | yes | + | | immediate commands | | + | | | | + | 0x07 | Task in progress | no | + | | | | + | 0x08 | Invalid Data ACK | no | + | | | | + | 0x09 | Invalid PDU field | no (Note 2) | + | | | | + | 0x0a | Long Operation Reject - Can't generate | yes | + | | Target Transfer Tag - out of resources | | + | | | | + | 0x0b | Negotiation Reset | no | + | | | | + | 0x0c | Waiting for Logout | no | + +------+----------------------------------------+------------------+ + + Note 1: For iSCSI, Data-Out PDU retransmission is only done if the + target requests retransmission with a recovery R2T. However, if this + is the data digest error on immediate data, the initiator may choose + to retransmit the whole PDU including the immediate data. + + Note 2: A target should use this reason code for all invalid values + of PDU fields that are meant to describe a task, a response, or a + data transfer. Some examples are invalid TTT/ITT, buffer offset, LUN + qualifying a TTT, and an invalid sequence number in a SNACK. + + All other values for Reason are reserved. + + + + +Satran, et al. Standards Track [Page 176] + +RFC 3720 iSCSI April 2004 + + + In all the cases in which a pre-instantiated SCSI task is terminated + because of the reject, the target MUST issue a proper SCSI command + response with CHECK CONDITION as described in Section 10.4.3 + Response. In these cases in which a status for the SCSI task was + already sent before the reject, no additional status is required. If + the error is detected while data from the initiator is still expected + (i.e., the command PDU did not contain all the data and the target + has not received a Data-Out PDU with the Final bit set to 1 for the + unsolicited data, if any, and all outstanding R2Ts, if any), the + target MUST wait until it receives the last expected Data-Out PDUs + with the F bit set to 1 before sending the Response PDU. + + For additional usage semantics of Reject PDU, see Section 6.3 Usage + Of Reject PDU in Recovery. + +10.17.2. DataSN/R2TSN + + This field is only valid if the rejected PDU is a Data/R2T SNACK and + the Reject reason code is "Protocol error" (see Section 10.16 SNACK + Request). The DataSN/R2TSN is the next Data/R2T sequence number that + the target would send for the task, if any. + +10.17.3. StatSN, ExpCmdSN and MaxCmdSN + + These fields carry their usual values and are not related to the + rejected command. StatSN is advanced after a Reject. + +10.17.4. Complete Header of Bad PDU + + The target returns the header (not including digest) of the PDU in + error as the data of the response. + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 177] + +RFC 3720 iSCSI April 2004 + + +10.18. NOP-Out + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|I| 0x00 |1| Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 20| Target Transfer Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 24| CmdSN | + +---------------+---------------+---------------+---------------+ + 28| ExpStatSN | + +---------------+---------------+---------------+---------------+ + 32/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + / DataSegment - Ping Data (optional) / + +/ / + +---------------+---------------+---------------+---------------+ + | Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + A NOP-Out may be used by an initiator as a "ping request" to verify + that a connection/session is still active and all its components are + operational. The NOP-In response is the "ping echo". + + A NOP-Out is also sent by an initiator in response to a NOP-In. + + A NOP-Out may also be used to confirm a changed ExpStatSN if another + PDU will not be available for a long time. + + Upon receipt of a NOP-In with the Target Transfer Tag set to a valid + value (not the reserved 0xffffffff), the initiator MUST respond with + a NOP-Out. In this case, the NOP-Out Target Transfer Tag MUST + contain a copy of the NOP-In Target Transfer Tag. + + + + + +Satran, et al. Standards Track [Page 178] + +RFC 3720 iSCSI April 2004 + + +10.18.1. Initiator Task Tag + + The NOP-Out MUST have the Initiator Task Tag set to a valid value + only if a response in the form of NOP-In is requested (i.e., the + NOP-Out is used as a ping request). Otherwise, the Initiator Task + Tag MUST be set to 0xffffffff. + + When a target receives the NOP-Out with a valid Initiator Task Tag, + it MUST respond with a Nop-In Response (see Section 10.19 NOP-In). + + If the Initiator Task Tag contains 0xffffffff, the I bit MUST be set + to 1 and the CmdSN is not advanced after this PDU is sent. + +10.18.2. Target Transfer Tag + + A target assigned identifier for the operation. + + The NOP-Out MUST only have the Target Transfer Tag set if it is + issued in response to a NOP-In with a valid Target Transfer Tag. In + this case, it copies the Target Transfer Tag from the NOP-In PDU. + Otherwise, the Target Transfer Tag MUST be set to 0xffffffff. + + When the Target Transfer Tag is set to a value other than 0xffffffff, + the LUN field MUST also be copied from the NOP-In. + +10.18.3. Ping Data + + Ping data are reflected in the NOP-In Response. The length of the + reflected data are limited to MaxRecvDataSegmentLength. The length + of ping data are indicated by the DataSegmentLength. 0 is a valid + value for the DataSegmentLength and indicates the absence of ping + data. + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 179] + +RFC 3720 iSCSI April 2004 + + +10.19. NOP-In + + Byte/ 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0|.|.| 0x20 |1| Reserved | + +---------------+---------------+---------------+---------------+ + 4|TotalAHSLength | DataSegmentLength | + +---------------+---------------+---------------+---------------+ + 8| LUN or Reserved | + + + + 12| | + +---------------+---------------+---------------+---------------+ + 16| Initiator Task Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 20| Target Transfer Tag or 0xffffffff | + +---------------+---------------+---------------+---------------+ + 24| StatSN | + +---------------+---------------+---------------+---------------+ + 28| ExpCmdSN | + +---------------+---------------+---------------+---------------+ + 32| MaxCmdSN | + +---------------+---------------+---------------+---------------+ + 36/ Reserved / + +/ / + +---------------+---------------+---------------+---------------+ + 48| Header-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + / DataSegment - Return Ping Data / + +/ / + +---------------+---------------+---------------+---------------+ + | Data-Digest (Optional) | + +---------------+---------------+---------------+---------------+ + + NOP-In is either sent by a target as a response to a NOP-Out, as a + "ping" to an initiator, or as a means to carry a changed ExpCmdSN + and/or MaxCmdSN if another PDU will not be available for a long time + (as determined by the target). + + When a target receives the NOP-Out with a valid Initiator Task Tag + (not the reserved value 0xffffffff), it MUST respond with a NOP-In + with the same Initiator Task Tag that was provided in the NOP-Out + request. It MUST also duplicate up to the first + MaxRecvDataSegmentLength bytes of the initiator provided Ping Data. + For such a response, the Target Transfer Tag MUST be 0xffffffff. + + + + + +Satran, et al. Standards Track [Page 180] + +RFC 3720 iSCSI April 2004 + + + Otherwise, when a target sends a NOP-In that is not a response to a + Nop-Out received from the initiator, the Initiator Task Tag MUST be + set to 0xffffffff and the Data Segment MUST NOT contain any data + (DataSegmentLength MUST be 0). + +10.19.1. Target Transfer Tag + + If the target is responding to a NOP-Out, this is set to the reserved + value 0xffffffff. + + If the target is sending a NOP-In as a Ping (intending to receive a + corresponding NOP-Out), this field is set to a valid value (not the + reserved 0xffffffff). + + If the target is initiating a NOP-In without wanting to receive a + corresponding NOP-Out, this field MUST hold the reserved value of + 0xffffffff. + +10.19.2. StatSN + + The StatSN field will always contain the next StatSN. However, when + the Initiator Task Tag is set to 0xffffffff, StatSN for the + connection is not advanced after this PDU is sent. + +10.19.3. LUN + + A LUN MUST be set to a correct value when the Target Transfer Tag is + valid (not the reserved value 0xffffffff). + +11. iSCSI Security Text Keys and Authentication Methods + + Only the following keys are used during the SecurityNegotiation stage + of the Login Phase: + + SessionType + InitiatorName + TargetName + TargetAddress + InitiatorAlias + TargetAlias + TargetPortalGroupTag + AuthMethod and the keys used by the authentication methods + specified under Section 11.1 AuthMethod along with all of + their associated keys as well as Vendor Specific + Authentication Methods. + + + + + + +Satran, et al. Standards Track [Page 181] + +RFC 3720 iSCSI April 2004 + + + Other keys MUST NOT be used. + + SessionType, InitiatorName, TargetName, InitiatorAlias, TargetAlias, + and TargetPortalGroupTag are described in Chapter 12 as they can be + used also in the OperationalNegotiation stage. + + All security keys have connection-wide applicability. + +11.1. AuthMethod + + Use: During Login - Security Negotiation Senders: Initiator and + Target Scope: connection + + AuthMethod = + + The main item of security negotiation is the authentication method + (AuthMethod). + + The authentication methods that can be used (appear in the + list-of-values) are either those listed in the following table or are + vendor-unique methods: + + +------------------------------------------------------------+ + | Name | Description | + +------------------------------------------------------------+ + | KRB5 | Kerberos V5 - defined in [RFC1510] | + +------------------------------------------------------------+ + | SPKM1 | Simple Public-Key GSS-API Mechanism | + | | defined in [RFC2025] | + +------------------------------------------------------------+ + | SPKM2 | Simple Public-Key GSS-API Mechanism | + | | defined in [RFC2025] | + +------------------------------------------------------------+ + | SRP | Secure Remote Password | + | | defined in [RFC2945] | + +------------------------------------------------------------+ + | CHAP | Challenge Handshake Authentication Protocol| + | | defined in [RFC1994] | + +------------------------------------------------------------+ + | None | No authentication | + +------------------------------------------------------------+ + + The AuthMethod selection is followed by an "authentication exchange" + specific to the authentication method selected. + + The authentication method proposal may be made by either the + initiator or the target. However the initiator MUST make the first + step specific to the selected authentication method as soon as it is + + + +Satran, et al. Standards Track [Page 182] + +RFC 3720 iSCSI April 2004 + + + selected. It follows that if the target makes the authentication + method proposal the initiator sends the first keys(s) of the exchange + together with its authentication method selection. + + The authentication exchange authenticates the initiator to the + target, and optionally, the target to the initiator. Authentication + is OPTIONAL to use but MUST be supported by the target and initiator. + + The initiator and target MUST implement CHAP. All other + authentication methods are OPTIONAL. + + Private or public extension algorithms MAY also be negotiated for + authentication methods. Whenever a private or public extension + algorithm is part of the default offer (the offer made in absence of + explicit administrative action) the implementer MUST ensure that CHAP + is listed as an alternative in the default offer and "None" is not + part of the default offer. + + Extension authentication methods MUST be named using one of the + following two formats: + + a) Z-reversed.vendor.dns_name.do_something= + b) Z<#>= + + Authentication methods named using the Z- format are used as private + extensions. Authentication methods named using the Z# format are + used as public extensions that must be registered with IANA and MUST + be described by an informational RFC. + + For all of the public or private extension authentication methods, + the method specific keys MUST conform to the format specified in + Section 5.1 Text Format for standard-label. + + To identify the vendor for private extension authentication methods, + we suggest you use the reversed DNS-name as a prefix to the proper + digest names. + + The part of digest-name following Z- and Z# MUST conform to the + format for standard-label specified in Section 5.1 Text Format. + + Support for public or private extension authentication methods is + OPTIONAL. + + The following subsections define the specific exchanges for each of + the standardized authentication methods. As mentioned earlier the + first step is always done by the initiator. + + + + + +Satran, et al. Standards Track [Page 183] + +RFC 3720 iSCSI April 2004 + + +11.1.1. Kerberos + + For KRB5 (Kerberos V5) [RFC1510] and [RFC1964], the initiator MUST + use: + + KRB_AP_REQ= + + where KRB_AP_REQ is the client message as defined in [RFC1510]. + + The default principal name assumed by an iSCSI initiator or target + (prior to any administrative configuration action) MUST be the iSCSI + Initiator Name or iSCSI Target Name respectively, prefixed by the + string "iscsi/". + + If the initiator authentication fails, the target MUST respond with a + Login reject with "Authentication Failure" status. Otherwise, if the + initiator has selected the mutual authentication option (by setting + MUTUAL-REQUIRED in the ap-options field of the KRB_AP_REQ), the + target MUST reply with: + + KRB_AP_REP= + + where KRB_AP_REP is the server's response message as defined in + [RFC1510]. + + If mutual authentication was selected and target authentication + fails, the initiator MUST close the connection. + + KRB_AP_REQ and KRB_AP_REP are binary-values and their binary length + (not the length of the character string that represents them in + encoded form) MUST not exceed 65536 bytes. + +11.1.2. Simple Public-Key Mechanism (SPKM) + + For SPKM1 and SPKM2 [RFC2025], the initiator MUST use: + + SPKM_REQ= + + where SPKM-REQ is the first initiator token as defined in [RFC2025]. + + [RFC2025] defines situations where each side may send an error token + that may cause the peer to re-generate and resend its last token. + This scheme is followed in iSCSI, and the error token syntax is: + + SPKM_ERROR= + + + + + + +Satran, et al. Standards Track [Page 184] + +RFC 3720 iSCSI April 2004 + + + However, SPKM-DEL tokens that are defined by [RFC2025] for fatal + errors will not be used by iSCSI. If the target needs to send a + SPKM-DEL token, it will, instead, send a Login "login reject" message + with the "Authentication Failure" status and terminate the + connection. If the initiator needs to send a SPKM-DEL token, it will + close the connection. + + In the following sections, we assume that no SPKM-ERROR tokens are + required. + + If the initiator authentication fails, the target MUST return an + error. Otherwise, if the AuthMethod is SPKM1 or if the initiator has + selected the mutual authentication option (by setting mutual-state + bit in the options field of the REQ-TOKEN in the SPKM-REQ), the + target MUST reply with: + + SPKM_REP_TI= + + where SPKM-REP-TI is the target token as defined in [RFC2025]. + + If mutual authentication was selected and target authentication + fails, the initiator MUST close the connection. Otherwise, if the + AuthMethod is SPKM1, the initiator MUST continue with: + + SPKM_REP_IT= + + where SPKM-REP-IT is the second initiator token as defined in + [RFC2025]. If the initiator authentication fails, the target MUST + answer with a Login reject with "Authentication Failure" status. + + SPKM requires support for very long authentication items. + + All the SPKM-* tokens are binary-values and their binary length (not + the length of the character string that represents them in encoded + form) MUST not exceed 65536 bytes. + +11.1.3. Secure Remote Password (SRP) + + For SRP [RFC2945], the initiator MUST use: + + SRP_U= TargetAuth=Yes /* or TargetAuth=No */ + + The target MUST answer with a Login reject with the "Authorization + Failure" status or reply with: + + SRP_GROUP= SRP_s= + + Where G1,G2... are proposed groups, in order of preference. + + + +Satran, et al. Standards Track [Page 185] + +RFC 3720 iSCSI April 2004 + + + The initiator MUST either close the connection or continue with: + + SRP_A= SRP_GROUP= + + Where G is one of G1,G2... that were proposed by the target. + + The target MUST answer with a Login reject with the "Authentication + Failure" status or reply with: + + SRP_B= + + The initiator MUST close the connection or continue with: + + SRP_M= + + If the initiator authentication fails, the target MUST answer with a + Login reject with "Authentication Failure" status. Otherwise, if the + initiator sent TargetAuth=Yes in the first message (requiring target + authentication), the target MUST reply with: + + SRP_HM= + + If the target authentication fails, the initiator MUST close the + connection. + + Where U, s, A, B, M, and H(A | M | K) are defined in [RFC2945] (using + the SHA1 hash function, such as SRP-SHA1) and G,Gn (Gn stands for + G1,G2...) are identifiers of SRP groups specified in [RFC3723]. G, + Gn, and U are text strings, s,A,B,M, and H(A | M | K) are + binary-values. The length of s,A,B,M and H(A | M | K) in binary form + (not the length of the character string that represents them in + encoded form) MUST not exceed 1024 bytes. + + For the SRP_GROUP, all the groups specified in [RFC3723] up to 1536 + bits (i.e., SRP-768, SRP-1024, SRP-1280, SRP-1536) must be supported + by initiators and targets. To guarantee interoperability, targets + MUST always offer "SRP-1536" as one of the proposed groups. + +11.1.4. Challenge Handshake Authentication Protocol (CHAP) + + For CHAP [RFC1994], in the first step, the initiator MUST send: + + CHAP_A= + + Where A1,A2... are proposed algorithms, in order of preference. + + + + + + +Satran, et al. Standards Track [Page 186] + +RFC 3720 iSCSI April 2004 + + + In the second step, the target MUST answer with a Login reject with + the "Authentication Failure" status or reply with: + + CHAP_A= CHAP_I= CHAP_C= + + Where A is one of A1,A2... that were proposed by the initiator. + + In the third step, the initiator MUST continue with: + + CHAP_N= CHAP_R= + + or, if it requires target authentication, with: + + CHAP_N= CHAP_R= CHAP_I= CHAP_C= + + If the initiator authentication fails, the target MUST answer with a + Login reject with "Authentication Failure" status. Otherwise, if the + initiator required target authentication, the target MUST either + answer with a Login reject with "Authentication Failure" or reply + with: + + CHAP_N= CHAP_R= + + If target authentication fails, the initiator MUST close the + connection. + + Where N, (A,A1,A2), I, C, and R are (correspondingly) the Name, + Algorithm, Identifier, Challenge, and Response as defined in + [RFC1994], N is a text string, A,A1,A2, and I are numbers, and C and + R are large-binary-values and their binary length (not the length of + the character string that represents them in encoded form) MUST not + exceed 1024 bytes. + + For the Algorithm, as stated in [RFC1994], one value is required to + be implemented: + + 5 (CHAP with MD5) + + To guarantee interoperability, initiators MUST always offer it as one + of the proposed algorithms. + +12. Login/Text Operational Text Keys + + Some session specific parameters MUST only be carried on the leading + connection and cannot be changed after the leading connection login + (e.g., MaxConnections, the maximum number of connections). This + + + + + +Satran, et al. Standards Track [Page 187] + +RFC 3720 iSCSI April 2004 + + + holds for a single connection session with regard to connection + restart. The keys that fall into this category have the use: LO + (Leading Only). + + Keys that can only be used during login have the use: IO (initialize + only), while those that can be used in both the Login Phase and Full + Feature Phase have the use: ALL. + + Keys that can only be used during Full Feature Phase use FFPO (Full + Feature Phase only). + + Keys marked as Any-Stage may also appear in the SecurityNegotiation + stage while all other keys described in this chapter are operational + keys. + + Keys that do not require an answer are marked as Declarative. + + Key scope is indicated as session-wide (SW) or connection-only (CO). + + Result function, wherever mentioned, states the function that can be + applied to check the validity of the responder selection. Minimum + means that the selected value cannot exceed the offered value. + Maximum means that the selected value cannot be lower than the + offered value. AND means that the selected value must be a possible + result of a Boolean "and" function with an arbitrary Boolean value + (e.g., if the offered value is No the selected value must be No). OR + means that the selected value must be a possible result of a Boolean + "or" function with an arbitrary Boolean value (e.g., if the offered + value is Yes the selected value must be Yes). + +12.1. HeaderDigest and DataDigest + + Use: IO + Senders: Initiator and Target + Scope: CO + + HeaderDigest = + DataDigest = + + Default is None for both HeaderDigest and DataDigest. + + Digests enable the checking of end-to-end, non-cryptographic data + integrity beyond the integrity checks provided by the link layers and + the covering of the whole communication path including all elements + that may change the network level PDUs such as routers, switches, and + proxies. + + + + + +Satran, et al. Standards Track [Page 188] + +RFC 3720 iSCSI April 2004 + + + The following table lists cyclic integrity checksums that can be + negotiated for the digests and that MUST be implemented by every + iSCSI initiator and target. These digest options only have error + detection significance. + + +---------------------------------------------+ + | Name | Description | Generator | + +---------------------------------------------+ + | CRC32C | 32 bit CRC |0x11edc6f41| + +---------------------------------------------+ + | None | no digest | + +---------------------------------------------+ + + The generator polynomial for this digest is given in + hex-notation (e.g., 0x3b stands for 0011 1011 and the polynomial is + x**5+X**4+x**3+x+1). + + When the Initiator and Target agree on a digest, this digest MUST be + used for every PDU in Full Feature Phase. + + Padding bytes, when present in a segment covered by a CRC, SHOULD be + set to 0 and are included in the CRC. + + The CRC MUST be calculated by a method that produces the same + results as the following process: + + - The PDU bits are considered as the coefficients of a + polynomial M(x) of degree n-1; bit 7 of the lowest numbered + byte is considered the most significant bit (x^n-1), followed + by bit 6 of the lowest numbered byte through bit 0 of the + highest numbered byte (x^0). + + - The most significant 32 bits are complemented. + + - The polynomial is multiplied by x^32 then divided by G(x). The + generator polynomial produces a remainder R(x) of degree <= 31. + + - The coefficients of R(x) are considered a 32 bit sequence. + + - The bit sequence is complemented and the result is the CRC. + + - The CRC bits are mapped into the digest word. The x^31 + coefficient in bit 7 of the lowest numbered byte of the digest + continuing through to the byte up to the x^24 coefficient in + bit 0 of the lowest numbered byte, continuing with the x^23 + coefficient in bit 7 of next byte through x^0 in bit 0 of the + highest numbered byte. + + + + +Satran, et al. Standards Track [Page 189] + +RFC 3720 iSCSI April 2004 + + + - Computing the CRC over any segment (data or header) extended + to include the CRC built using the generator 0x11edc6f41 will + always get the value 0x1c2d19ed as its final remainder (R(x)). + This value is given here in its polynomial form (i.e., not + mapped as the digest word). + + For a discussion about selection criteria for the CRC, see + [RFC3385]. For a detailed analysis of the iSCSI polynomial, see + [Castagnoli93]. + + Private or public extension algorithms MAY also be negotiated for + digests. Whenever a private or public digest extension algorithm is + part of the default offer (the offer made in absence of explicit + administrative action) the implementer MUST ensure that CRC32C is + listed as an alternative in the default offer and "None" is not + part of the default offer. + + Extension digest algorithms MUST be named using one of the following + two formats: + + a) Y-reversed.vendor.dns_name.do_something= + b) Y<#>= + + Digests named using the Y- format are used for private purposes + (unregistered). Digests named using the Y# format (public extension) + must be registered with IANA and MUST be described by an + informational RFC. + + For private extension digests, to identify the vendor, we suggest + you use the reversed DNS-name as a prefix to the proper digest + names. + + The part of digest-name following Y- and Y# MUST conform to the + format for standard-label specified in Section 5.1 Text Format. + + Support for public or private extension digests is OPTIONAL. + +12.2. MaxConnections + + Use: LO + Senders: Initiator and Target + Scope: SW + Irrelevant when: SessionType=Discovery + + MaxConnections= + + Default is 1. + Result function is Minimum. + + + +Satran, et al. Standards Track [Page 190] + +RFC 3720 iSCSI April 2004 + + + + Initiator and target negotiate the maximum number of connections + requested/acceptable. + +12.3. SendTargets + + Use: FFPO + Senders: Initiator + Scope: SW + + For a complete description, see Appendix D. - SendTargets + Operation -. + +12.4. TargetName + + Use: IO by initiator, FFPO by target - only as response to a + SendTargets, Declarative, Any-Stage + + Senders: Initiator and Target + Scope: SW + + TargetName= + + Examples: + + TargetName=iqn.1993-11.com.disk-vendor:diskarrays.sn.45678 + TargetName=eui.020000023B040506 + + The initiator of the TCP connection MUST provide this key to the + remote endpoint in the first login request if the initiator is not + establishing a discovery session. The iSCSI Target Name specifies + the worldwide unique name of the target. + + The TargetName key may also be returned by the "SendTargets" text + request (which is its only use when issued by a target). + + TargetName MUST not be redeclared within the login phase. + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 191] + +RFC 3720 iSCSI April 2004 + + +12.5. InitiatorName + + Use: IO, Declarative, Any-Stage + Senders: Initiator + Scope: SW + + InitiatorName= + + Examples: + + InitiatorName=iqn.1992-04.com.os-vendor.plan9:cdrom.12345 + InitiatorName=iqn.2001-02.com.ssp.users:customer235.host90 + + The initiator of the TCP connection MUST provide this key to the + remote endpoint at the first Login of the Login Phase for every + connection. The InitiatorName key enables the initiator to identify + itself to the remote endpoint. + + InitiatorName MUST not be redeclared within the login phase. + +12.6. TargetAlias + + Use: ALL, Declarative, Any-Stage + Senders: Target + Scope: SW + + TargetAlias= + + Examples: + + TargetAlias=Bob-s Disk + TargetAlias=Database Server 1 Log Disk + TargetAlias=Web Server 3 Disk 20 + + If a target has been configured with a human-readable name or + description, this name SHOULD be communicated to the initiator during + a Login Response PDU if SessionType=Normal (see Section 12.21 + SessionType). This string is not used as an identifier, nor is it + meant to be used for authentication or authorization decisions. It + can be displayed by the initiator's user interface in a list of + targets to which it is connected. + + + + + + + + + + +Satran, et al. Standards Track [Page 192] + +RFC 3720 iSCSI April 2004 + + +12.7. InitiatorAlias + + Use: ALL, Declarative, Any-Stage + Senders: Initiator + Scope: SW + + InitiatorAlias= + + Examples: + + InitiatorAlias=Web Server 4 + InitiatorAlias=spyalley.nsa.gov + InitiatorAlias=Exchange Server + + If an initiator has been configured with a human-readable name or + description, it SHOULD be communicated to the target during a Login + Request PDU. If not, the host name can be used instead. This string + is not used as an identifier, nor is meant to be used for + authentication or authorization decisions. It can be displayed by + the target's user interface in a list of initiators to which it is + connected. + +12.8. TargetAddress + + Use: ALL, Declarative, Any-Stage + Senders: Target + Scope: SW + + TargetAddress=domainname[:port][,portal-group-tag] + + The domainname can be specified as either a DNS host name, a + dotted-decimal IPv4 address, or a bracketed IPv6 address as specified + in [RFC2732]. + + If the TCP port is not specified, it is assumed to be the + IANA-assigned default port for iSCSI (see Section 13 IANA + Considerations). + + If the TargetAddress is returned as the result of a redirect status + in a login response, the comma and portal group tag MUST be omitted. + + If the TargetAddress is returned within a SendTargets response, the + portal group tag MUST be included. + + + + + + + + +Satran, et al. Standards Track [Page 193] + +RFC 3720 iSCSI April 2004 + + + Examples: + + TargetAddress=10.0.0.1:5003,1 + TargetAddress=[1080:0:0:0:8:800:200C:417A],65 + TargetAddress=[1080::8:800:200C:417A]:5003,1 + TargetAddress=computingcenter.example.com,23 + + Use of the portal-group-tag is described in Appendix D. + - SendTargets Operation -. The formats for the port and + portal-group-tag are the same as the one specified in Section 12.9 + TargetPortalGroupTag. + +12.9. TargetPortalGroupTag + + Use: IO by target, Declarative, Any-Stage + Senders: Target + Scope: SW + + TargetPortalGroupTag=<16-bit-binary-value> + + Examples: + TargetPortalGroupTag=1 + + The target portal group tag is a 16-bit binary-value that uniquely + identifies a portal group within an iSCSI target node. This key + carries the value of the tag of the portal group that is servicing + the Login request. The iSCSI target returns this key to the + initiator in the Login Response PDU to the first Login Request PDU + that has the C bit set to 0 when TargetName is given by the + initiator. + + For the complete usage expectations of this key see Section 5.3 Login + Phase. + +12.10. InitialR2T + + Use: LO + Senders: Initiator and Target + Scope: SW + Irrelevant when: SessionType=Discovery + + InitialR2T= + + Examples: + + I->InitialR2T=No + T->InitialR2T=No + + + + +Satran, et al. Standards Track [Page 194] + +RFC 3720 iSCSI April 2004 + + + Default is Yes. + Result function is OR. + + The InitialR2T key is used to turn off the default use of R2T for + unidirectional and the output part of bidirectional commands, thus + allowing an initiator to start sending data to a target as if it has + received an initial R2T with Buffer Offset=Immediate Data Length and + Desired Data Transfer Length=(min(FirstBurstLength, Expected Data + Transfer Length) - Received Immediate Data Length). + + The default action is that R2T is required, unless both the initiator + and the target send this key-pair attribute specifying InitialR2T=No. + Only the first outgoing data burst (immediate data and/or separate + PDUs) can be sent unsolicited (i.e., not requiring an explicit R2T). + +12.11. ImmediateData + + Use: LO + Senders: Initiator and Target + Scope: SW + Irrelevant when: SessionType=Discovery + + ImmediateData= + + Default is Yes. + Result function is AND. + + The initiator and target negotiate support for immediate data. To + turn immediate data off, the initiator or target must state its + desire to do so. ImmediateData can be turned on if both the + initiator and target have ImmediateData=Yes. + + If ImmediateData is set to Yes and InitialR2T is set to Yes + (default), then only immediate data are accepted in the first burst. + + If ImmediateData is set to No and InitialR2T is set to Yes, then the + initiator MUST NOT send unsolicited data and the target MUST reject + unsolicited data with the corresponding response code. + + If ImmediateData is set to No and InitialR2T is set to No, then the + initiator MUST NOT send unsolicited immediate data, but MAY send one + unsolicited burst of Data-Out PDUs. + + If ImmediateData is set to Yes and InitialR2T is set to No, then the + initiator MAY send unsolicited immediate data and/or one unsolicited + burst of Data-Out PDUs. + + + + + +Satran, et al. Standards Track [Page 195] + +RFC 3720 iSCSI April 2004 + + + The following table is a summary of unsolicited data options: + + +----------+-------------+------------------+--------------+ + |InitialR2T|ImmediateData| Unsolicited |Immediate Data| + | | | Data Out PDUs | | + +----------+-------------+------------------+--------------+ + | No | No | Yes | No | + +----------+-------------+------------------+--------------+ + | No | Yes | Yes | Yes | + +----------+-------------+------------------+--------------+ + | Yes | No | No | No | + +----------+-------------+------------------+--------------+ + | Yes | Yes | No | Yes | + +----------+-------------+------------------+--------------+ + +12.12. MaxRecvDataSegmentLength + + Use: ALL, Declarative + Senders: Initiator and Target + Scope: CO + + MaxRecvDataSegmentLength= + + Default is 8192 bytes. + + The initiator or target declares the maximum data segment length in + bytes it can receive in an iSCSI PDU. + + The transmitter (initiator or target) is required to send PDUs with a + data segment that does not exceed MaxRecvDataSegmentLength of the + receiver. + + A target receiver is additionally limited by MaxBurstLength for + solicited data and FirstBurstLength for unsolicited data. An + initiator MUST NOT send solicited PDUs exceeding MaxBurstLength nor + unsolicited PDUs exceeding FirstBurstLength (or + FirstBurstLength-Immediate Data Length if immediate data were sent). + +12.13. MaxBurstLength + + Use: LO + Senders: Initiator and Target + Scope: SW + Irrelevant when: SessionType=Discovery + + MaxBurstLength= + + + + + +Satran, et al. Standards Track [Page 196] + +RFC 3720 iSCSI April 2004 + + + Default is 262144 (256 Kbytes). + Result function is Minimum. + + The initiator and target negotiate maximum SCSI data payload in bytes + in a Data-In or a solicited Data-Out iSCSI sequence. A sequence + consists of one or more consecutive Data-In or Data-Out PDUs that end + with a Data-In or Data-Out PDU with the F bit set to one. + +12.14. FirstBurstLength + + Use: LO + Senders: Initiator and Target + Scope: SW + Irrelevant when: SessionType=Discovery + Irrelevant when: ( InitialR2T=Yes and ImmediateData=No ) + + FirstBurstLength= + + Default is 65536 (64 Kbytes). + Result function is Minimum. + + The initiator and target negotiate the maximum amount in bytes of + unsolicited data an iSCSI initiator may send to the target during the + execution of a single SCSI command. This covers the immediate data + (if any) and the sequence of unsolicited Data-Out PDUs (if any) that + follow the command. + + FirstBurstLength MUST NOT exceed MaxBurstLength. + +12.15. DefaultTime2Wait + + Use: LO + Senders: Initiator and Target + Scope: SW + + DefaultTime2Wait= + + Default is 2. + Result function is Maximum. + + The initiator and target negotiate the minimum time, in seconds, to + wait before attempting an explicit/implicit logout or an active task + reassignment after an unexpected connection termination or a + connection reset. + + A value of 0 indicates that logout or active task reassignment can be + attempted immediately. + + + + +Satran, et al. Standards Track [Page 197] + +RFC 3720 iSCSI April 2004 + + +12.16. DefaultTime2Retain + + Use: LO Senders: Initiator and Target Scope: SW + + DefaultTime2Retain= + + Default is 20. Result function is Minimum. + + The initiator and target negotiate the maximum time, in seconds after + an initial wait (Time2Wait), before which an active task reassignment + is still possible after an unexpected connection termination or a + connection reset. + + This value is also the session state timeout if the connection in + question is the last LOGGED_IN connection in the session. + + A value of 0 indicates that connection/task state is immediately + discarded by the target. + +12.17. MaxOutstandingR2T + + Use: LO + Senders: Initiator and Target + Scope: SW + + MaxOutstandingR2T= + Irrelevant when: SessionType=Discovery + + Default is 1. + Result function is Minimum. + + Initiator and target negotiate the maximum number of outstanding R2Ts + per task, excluding any implied initial R2T that might be part of + that task. An R2T is considered outstanding until the last data PDU + (with the F bit set to 1) is transferred, or a sequence reception + timeout (Section 6.1.4.1 Recovery Within-command) is encountered for + that data sequence. + +12.18. DataPDUInOrder + + Use: LO + Senders: Initiator and Target + Scope: SW + Irrelevant when: SessionType=Discovery + + DataPDUInOrder= + + + + + +Satran, et al. Standards Track [Page 198] + +RFC 3720 iSCSI April 2004 + + + Default is Yes. + Result function is OR. + + No is used by iSCSI to indicate that the data PDUs within sequences + can be in any order. Yes is used to indicate that data PDUs within + sequences have to be at continuously increasing addresses and + overlays are forbidden. + +12.19. DataSequenceInOrder + + Use: LO + Senders: Initiator and Target + Scope: SW + Irrelevant when: SessionType=Discovery + + DataSequenceInOrder= + + Default is Yes. + Result function is OR. + + A Data Sequence is a sequence of Data-In or Data-Out PDUs that end + with a Data-In or Data-Out PDU with the F bit set to one. A Data-Out + sequence is sent either unsolicited or in response to an R2T. + Sequences cover an offset-range. + + If DataSequenceInOrder is set to No, Data PDU sequences may be + transferred in any order. + + If DataSequenceInOrder is set to Yes, Data Sequences MUST be + transferred using continuously non-decreasing sequence offsets (R2T + buffer offset for writes, or the smallest SCSI Data-In buffer offset + within a read data sequence). + + If DataSequenceInOrder is set to Yes, a target may retry at most the + last R2T, and an initiator may at most request retransmission for the + last read data sequence. For this reason, if ErrorRecoveryLevel is + not 0 and DataSequenceInOrder is set to Yes then MaxOustandingR2T + MUST be set to 1. + +12.20. ErrorRecoveryLevel + + Use: LO + Senders: Initiator and Target + Scope: SW + + ErrorRecoveryLevel= + + + + + +Satran, et al. Standards Track [Page 199] + +RFC 3720 iSCSI April 2004 + + + Default is 0. + Result function is Minimum. + + The initiator and target negotiate the recovery level supported. + + Recovery levels represent a combination of recovery capabilities. + Each recovery level includes all the capabilities of the lower + recovery levels and adds some new ones to them. + + In the description of recovery mechanisms, certain recovery classes + are specified. Section 6.1.5 Error Recovery Hierarchy describes the + mapping between the classes and the levels. + +12.21. SessionType + + Use: LO, Declarative, Any-Stage + Senders: Initiator + Scope: SW + + SessionType= + + Default is Normal. + + The initiator indicates the type of session it wants to create. The + target can either accept it or reject it. + + A discovery session indicates to the Target that the only purpose of + this Session is discovery. The only requests a target accepts in + this type of session are a text request with a SendTargets key and a + logout request with reason "close the session". + + The discovery session implies MaxConnections = 1 and overrides both + the default and an explicit setting. + +12.22. The Private or Public Extension Key Format + + Use: ALL + Senders: Initiator and Target + Scope: specific key dependent + + X-reversed.vendor.dns_name.do_something= + + or + + X<#>= + + + + + + +Satran, et al. Standards Track [Page 200] + +RFC 3720 iSCSI April 2004 + + + Keys with this format are used for public or private extension + purposes. These keys always start with X- if unregistered with IANA + (private) or X# if registered with IANA (public). + + For unregistered keys, to identify the vendor, we suggest you use the + reversed DNS-name as a prefix to the key-proper. + + The part of key-name following X- and X# MUST conform to the format + for key-name specified in Section 5.1 Text Format. + + For IANA registered keys the string following X# must be registered + with IANA and the use of the key MUST be described by an + informational RFC. + + Vendor specific keys MUST ONLY be used in normal sessions. + + Support for public or private extension keys is OPTIONAL. + +13. IANA Considerations + + This section conforms to [RFC2434]. + + The well-known user TCP port number for iSCSI connections assigned by + IANA is 3260 and this is the default iSCSI port. Implementations + needing a system TCP port number may use port 860, the port assigned + by IANA as the iSCSI system port; however in order to use port 860, + it MUST be explicitly specified - implementations MUST NOT default to + use of port 860, as 3260 is the only allowed default. + + Extension keys, authentication methods, or digest types for which a + vendor or group of vendors intend to provide publicly available + descriptions MUST be described by an RFC and MUST be registered with + IANA. + + The IANA has set up the following three registries: + + a) iSCSI extended key registry + b) iSCSI authentication methods registry + c) iSCSI digests registry + + [RFC3723] also instructs IANA to maintain a registry for the values + of the SRP_GROUP key. The format of these values must conform to the + one specified for iSCSI extension item-label in Section 13.5.4 + Standard iSCSI extension item-label format. + + + + + + + +Satran, et al. Standards Track [Page 201] + +RFC 3720 iSCSI April 2004 + + + For the iSCSI authentication methods registry and the iSCSI digests + registry, IANA MUST also assign a 16-bit unsigned integer number (the + method number for the authentication method and the digest number for + the digest). + + The following initial values for the registry for authentication + methods are specified by the standards action of this document: + + Authentication Method | Number | + +----------------------------------------+--------+ + | CHAP | 1 | + +----------------------------------------+--------+ + | SRP | 2 | + +----------------------------------------+--------+ + | KRB5 | 3 | + +----------------------------------------+--------+ + | SPKM1 | 4 | + +----------------------------------------+--------+ + | SPKM2 | 5 | + +----------------------------------------+--------+ + + All other record numbers from 0 to 255 are reserved. IANA will + register numbers above 255. + + Authentication methods with numbers above 255 MUST be unique within + the registry and MUST be used with the prefix Z#. + + + The following initial values for the registry for digests are + specified by the standards action of this document: + + Digest | Number | + +----------------------------------------+--------+ + | CRC32C | 1 | + +----------------------------------------+--------+ + + All other record numbers from 0 to 255 are reserved. IANA will + register numbers above 255. + + Digests with numbers above 255 MUST be unique within the registry and + MUST be used with the prefix Y#. + + The RFC that describes the item to be registered MUST indicate in the + IANA Considerations section the string and iSCSI registry to which it + should be recorded. + + Extension Keys, Authentication Methods, and digests (iSCSI extension + items) must conform to a number of requirements as described below. + + + +Satran, et al. Standards Track [Page 202] + +RFC 3720 iSCSI April 2004 + + +13.1. Naming Requirements + + Each iSCSI extension item must have a unique name in its category. + This name will be used as a standard-label for the key, access + method, or digest and must conform to the syntax specified in Section + 13.5.4 Standard iSCSI extension item-label format for iSCSI extension + item-labels. + +13.2. Mechanism Specification Requirements + + For iSCSI extension items all of the protocols and procedures used by + a given iSCSI extension item must be described, either in the + specification of the iSCSI extension item itself or in some other + publicly available specification, in sufficient detail for the iSCSI + extension item to be implemented by any competent implementor. Use + of secret and/or proprietary methods in iSCSI extension items are + expressly prohibited. In addition, the restrictions imposed by + [RFC1602] on the standardization of patented algorithms must be + respected. + +13.3. Publication Requirements + + All iSCSI extension items must be described by an RFC. The RFC may + be informational rather than Standards-Track, although Standards + Track review and approval are encouraged for all iSCSI extension + items. + +13.4. Security Requirements + + Any known security issues that arise from the use of the iSCSI + extension item must be completely and fully described. It is not + required that the iSCSI extension item be secure or that it be free + from risks, but that the known risks be identified. Publication of a + new iSCSI extension item does not require an exhaustive security + review, and the security considerations section is subject to + continuing evaluation. + + Additional security considerations should be addressed by publishing + revised versions of the iSCSI extension item specification. + + For each of these registries, IANA must record the registered string, + which MUST conform to the format rules described in Section 13.5.4 + Standard iSCSI extension item-label format for iSCSI extension + item-labels, and the RFC number that describes it. The key prefix + (X#, Y# or Z#) is not part of the recorded string. + + + + + + +Satran, et al. Standards Track [Page 203] + +RFC 3720 iSCSI April 2004 + + +13.5. Registration Procedure + + Registration of a new iSCSI extension item starts with the + construction of an Internet Draft to become an RFC. + +13.5.1. Present the iSCSI extension item to the Community + + Send a proposed access type specification to the IPS WG mailing list, + or if the IPS WG is disbanded at the registration time, to a mailing + list designated by the IETF Transport Area Director for a review + period of a month. The intent of the public posting is to solicit + comments and feedback on the iSCSI extension item specification and a + review of any security considerations. + +13.5.2. iSCSI extension item review and IESG approval + + When the one month period has passed, the IPS WG chair or a person + nominated by the IETF Transport Area Director (the iSCSI extension + item reviewer) forwards the Internet Draft to the IESG for + publication as an informational RFC or rejects it. If the + specification is a standards track document, the usual IETF + procedures for such documents are followed. + + Decisions made by the iSCSI extension item reviewer must be published + within two weeks after the month-long review period. Decisions made + by the iSCSI extension item reviewer can be appealed through the IESG + appeal process. + +13.5.3. IANA Registration + + Provided that the iSCSI extension item has either passed review or + has been successfully appealed to the IESG, and the specification is + published as an RFC, then IANA will register the iSCSI extension item + and make the registration available to the community. + +13.5.4. Standard iSCSI extension item-label format + + The following character symbols are used iSCSI extension item-labels + (the hexadecimal values represent Unicode code points): + + (a-z, A-Z) - letters + (0-9) - digits + "." (0x2e) - dot + "-" (0x2d) - minus + "+" (0x2b) - plus + "@" (0x40) - commercial at + "_" (0x5f) - underscore + + + + +Satran, et al. Standards Track [Page 204] + +RFC 3720 iSCSI April 2004 + + + An iSCSI extension item-label is a string of one or more characters + that consist of letters, digits, dot, minus, plus, commercial at, or + underscore. An iSCSI extension item-label MUST begin with a capital + letter and must not exceed 63 characters. + +13.6. IANA Procedures for Registering iSCSI extension items + + The identity of the iSCSI extension item reviewer is communicated to + the IANA by the IESG. Then, the IANA only acts in response to iSCSI + extension item definitions that are approved by the iSCSI extension + item reviewer and forwarded by the reviewer to the IANA for + registration, or in response to a communication from the IESG that an + iSCSI extension item definition appeal has overturned the iSCSI + extension item reviewer's ruling. + +References + +Normative References + + [CAM] ANSI X3.232-199X, Common Access Method-3. + + [EUI] "Guidelines for 64-bit Global Identifier (EUI-64)", + http: + //standards.ieee.org/regauth/oui/tutorials/EUI64.html + + [OUI] "IEEE OUI and Company_Id Assignments", + http://standards.ieee.org/regauth/oui + + [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, + September 1981. + + [RFC793] Postel, J., "Transmission Control Protocol", STD 7, + RFC 793, September 1981. + + [RFC1035] Mockapetris, P., "Domain Names - Implementation and + Specification", STD 13, RFC 1035, November 1987. + + [RFC1122] Braden, R., Ed., "Requirements for Internet Hosts- + Communication Layer", STD 3, RFC 1122, October 1989. + + [RFC1510] Kohl, J. and C. Neuman, "The Kerberos Network + Authentication Service (V5)", RFC 1510, September + 1993. + + [RFC1737] Sollins, K. and L. Masinter "Functional Requirements + for Uniform Resource Names"RFC 1737, December 1994. + + + + + +Satran, et al. Standards Track [Page 205] + +RFC 3720 iSCSI April 2004 + + + [RFC1964] Linn, J., "The Kerberos Version 5 GSS-API Mechanism", + RFC 1964, June 1996. + + [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC + 1982, August 1996. + + [RFC1994] Simpson, W., "PPP Challenge Handshake Authentication + Protocol (CHAP)", RFC 1994, August 1996. + + [RFC2025] Adams, C., "The Simple Public-Key GSS-API Mechanism + (SPKM)", RFC 2025, October 1996. + + [RFC2045] Borenstein, N. and N. Freed, "MIME (Multipurpose + Internet Mail Extensions) Part One: Mechanisms for + Specifying and Describing the Format of Internet + Message Bodies", RFC 2045, November 1996. + + [RFC2119] Bradner, S. "Key Words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC2279] Yergeau, F., "UTF-8, a Transformation Format of ISO + 10646", RFC 2279 October 1996. + + [RFC2373] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 2373, July 1998. + + [RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter "Uniform + Resource Identifiers", RFC 2396, August 1998. + + [RFC2401] Kent, S. and R. Atkinson, "Security Architecture for + the Internet Protocol", RFC 2401, November 1998. + + [RFC2404] Madson, C. and R. Glenn, "The Use of HMAC-SHA-1-96 + within ESP and AH", RFC 2404, November 1998. + + [RFC2406] Kent, S. and R. Atkinson, "IP Encapsulating Security + Payload (ESP)", RFC 2406, November 1998. + + [RFC2407] Piper, D., "The Internet IP Security Domain of + Interpretation of ISAKMP", RFC 2407, November 1998. + + [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange + (IKE)", RFC2409, November 1998. + + [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing + an IANA Considerations Section in RFCs.", BCP 26, RFC + 2434, October 1998. + + + + +Satran, et al. Standards Track [Page 206] + +RFC 3720 iSCSI April 2004 + + + [RFC2451] Pereira, R. and R. Adams " The ESP CBC-Mode Cipher + Algorithms", RFC 2451, November 1998. + + [RFC2732] Hinden, R., Carpenter, B. and L. Masinter, "Format for + Literal IPv6 Addresses in URL's", RFC 2451, December + 1999. + + [RFC2945] Wu, T., "The SRP Authentication and Key Exchange + System", RFC 2945, September 2000. + + [RFC3066] Alvestrand, H., "Tags for the Identification of + Languages", STD 47, RFC 3066, January 2001. + + [RFC3454] Hoffman, P. and M. Blanchet, "Preparation of + Internationalized Strings ("stringprep")", RFC 3454, + December 2002. + + [RFC3566] Frankel, S. and H. Herbert, "The AES-XCBC-MAC-96 + Algorithm and Its Use With IPsec", RFC 3566, September + 2003. + + [RFC3686] Housley, R., "Using Advanced Encryption Standard (AES) + Counter Mode with IPsec Encapsulating Security Payload + (ESP)", RFC 3686, January 2004. + + [RFC3722] Bakke, M., "String Profile for Internet Small Computer + Systems Interface (iSCSI) Names", RFC 3722, March + 2004. + + [RFC3723] Aboba, B., Tseng, J., Walker, J., Rangan, V. and F. + Travostino, "Securing Block Storage Protocols over + IP", RFC 3723, March 2004. + + [SAM2] T10/1157D, SCSI Architecture Model - 2 (SAM-2). + + [SBC] NCITS.306-1998, SCSI-3 Block Commands (SBC). + + [SPC3] T10/1416-D, SCSI Primary Commands-3. + + [UNICODE] Unicode Standard Annex #15, "Unicode Normalization + Forms", http://www.unicode.org/unicode/reports/tr15 + + + + + + + + + + +Satran, et al. Standards Track [Page 207] + +RFC 3720 iSCSI April 2004 + + +Informative References + + [BOOT] P. Sarkar, et al., "Bootstrapping Clients using the + iSCSI Protocol", Work in Progress, July 2003. + + [Castagnoli93] G. Castagnoli, S. Braeuer and M. Herrman "Optimization + of Cyclic Redundancy-Check Codes with 24 and 32 Parity + Bits", IEEE Transact. on Communications, Vol. 41, No. + 6, June 1993. + + [CORD] Chadalapaka, M. and R. Elliott, "SCSI Command + Ordering Considerations with iSCSI", Work in Progress. + + [RFC3347] Krueger, M., Haagens, R., Sapuntzakis, C. and M. + Bakke, "Small Computer Systems Interface protocol over + the Internet (iSCSI) Requirements and Design + Considerations", RFC 3347, July 2002. + + [RFC3385] Sheinwald, D., Staran, J., Thaler, P. and V. Cavanna, + "Internet Protocol Small Computer System Interface + (iSCSI) Cyclic Redundancy Check (CRC)/Checksum + Considerations", RFC 3385, September 2002. + + [RFC3721] Bakke M., Hafner, J., Hufferd, J., Voruganti, K. and + M. Krueger, "Internet Small Computer Systems Interface + (iSCSI) Naming and Discovery, RFC 3721, March 2004. + + [SEQ-EXT] Kent, S., "IP Encapsulating Security Payload (ESP)", + Work in Progress, July 2002. + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 208] + +RFC 3720 iSCSI April 2004 + + +Appendix A. Sync and Steering with Fixed Interval Markers + + This appendix presents a simple scheme for synchronization (PDU + boundary retrieval). It uses markers that include synchronization + information placed at fixed intervals in the TCP stream. + + A Marker consists of: + + Byte / 0 | 1 | 2 | 3 | + / | | | | + |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7| + +---------------+---------------+---------------+---------------+ + 0| Next-iSCSI-PDU-start pointer - copy #1 | + +---------------+---------------+---------------+---------------+ + 4| Next-iSCSI-PDU-start pointer - copy #2 | + +---------------+---------------+---------------+---------------+ + + The Marker scheme uses payload byte stream counting that includes + every byte placed by iSCSI in the TCP stream except for the markers + themselves. It also excludes any bytes that TCP counts but are not + originated by iSCSI. + + Markers MUST NOT be included in digest calculation. + + The Marker indicates the offset to the next iSCSI PDU header. The + Marker is eight bytes in length and contains two 32-bit offset fields + that indicate how many bytes to skip in the TCP stream in order to + find the next iSCSI PDU header. The marker uses two copies of the + pointer so that a marker that spans a TCP packet boundary should + leave at least one valid copy in one of the packets. + + The structure and semantics of an inserted marker are independent of + the marker interval. + + The use of markers is negotiable. The initiator and target MAY + indicate their readiness to receive and/or send markers during login + separately for each connection. The default is No. + +A.1. Markers At Fixed Intervals + + A marker is inserted at fixed intervals in the TCP byte stream. + During login, each end of the iSCSI session specifies the interval at + which it is willing to receive the marker, or it disables the marker + altogether. If a receiver indicates that it desires a marker, the + sender MAY agree (during negotiation) and provide the marker at the + desired interval. However, in certain environments, a sender that + does not provide markers to a receiver that wants markers may suffer + an appreciable performance degradation. + + + +Satran, et al. Standards Track [Page 209] + +RFC 3720 iSCSI April 2004 + + + The marker interval and the initial marker-less interval are counted + in terms of the bytes placed in the TCP stream data by iSCSI. + + When reduced to iSCSI terms, markers MUST indicate the offset to a + 4-byte word boundary in the stream. The least significant two bits + of each marker word are reserved and are considered 0 for offset + computation. + + Padding iSCSI PDU payloads to 4-byte word boundaries simplifies + marker manipulation. + +A.2. Initial Marker-less Interval + + To enable the connection setup including the Login Phase negotiation, + marking (if any) is only started at the first marker interval after + the end of the Login Phase. However, in order to enable the marker + inclusion and exclusion mechanism to work without knowledge of the + length of the Login Phase, the first marker will be placed in the TCP + stream as if the Marker-less interval had included markers. + + Thus, all markers appear in the stream at locations conforming to the + formula: [(MI + 8) * n - 8] where MI = Marker Interval, n = integer + number. + + For example, if the marker interval is 512 bytes and the login ended + at byte 1003 (first iSCSI placed byte is 0), the first marker will be + inserted after byte 1031 in the stream. + +A.3. Negotiation + + The following operational key=value pairs are used to negotiate the + fixed interval markers. The direction (output or input) is relative + to the initiator. + +A.3.1. OFMarker, IFMarker + + Use: IO + Senders: Initiator and Target + Scope: CO + + OFMarker= + IFMarker= + + Default is No. + + Result function is AND. + + + + + +Satran, et al. Standards Track [Page 210] + +RFC 3720 iSCSI April 2004 + + + OFMarker is used to turn on or off the initiator to target markers + on the connection. IFMarker is used to turn on or off the target to + initiator markers on the connection. + + Examples: + + I->OFMarker=Yes,IFMarker=Yes + T->OFMarker=Yes,IFMarker=Yes + + Results in the Marker being used in both directions while: + + I->OFMarker=Yes,IFMarker=Yes + T->OFMarker=Yes,IFMarker=No + + Results in Marker being used from the initiator to the target, but + not from the target to initiator. + +A.3.2. OFMarkInt, IFMarkInt + + Use: IO + Senders: Initiator and Target + Scope: CO + OFMarkInt is Irrelevant when: OFMarker=No + IFMarkInt is Irrelevant when: IFMarker=No + + Offering: + + OFMarkInt= + IFMarkInt= + + Responding: + + OFMarkInt=|Reject + IFMarkInt=|Reject + + OFMarkInt is used to set the interval for the initiator to target + markers on the connection. IFMarkInt is used to set the interval for + the target to initiator markers on the connection. + + For the offering, the initiator or target indicates the minimum to + maximum interval (in 4-byte words) it wants the markers for one or + both directions. In case it only wants a specific value, only a + single value has to be specified. The responder selects a value + within the minimum and maximum offered or the only value offered or + indicates through the xFMarker key=value its inability to set and/or + receive markers. When the interval is unacceptable the responder + answers with "Reject". Reject is resetting the marker function in + the specified direction (Output or Input) to No. + + + +Satran, et al. Standards Track [Page 211] + +RFC 3720 iSCSI April 2004 + + + The interval is measured from the end of a marker to the beginning of + the next marker. For example, a value of 1024 means 1024 words (4096 + bytes of iSCSI payload between markers). + + The default is 2048. + +Appendix B. Examples + +B.1. Read Operation Example + + +------------------+-----------------------+----------------------+ + |Initiator Function| PDU Type | Target Function | + +------------------+-----------------------+----------------------+ + | Command request |SCSI Command (READ)>>> | | + | (read) | | | + +------------------+-----------------------+----------------------+ + | | |Prepare Data Transfer | + +------------------+-----------------------+----------------------+ + | Receive Data | <<< SCSI Data-In | Send Data | + +------------------+-----------------------+----------------------+ + | Receive Data | <<< SCSI Data-In | Send Data | + +------------------+-----------------------+----------------------+ + | Receive Data | <<< SCSI Data-In | Send Data | + +------------------+-----------------------+----------------------+ + | | <<< SCSI Response |Send Status and Sense | + +------------------+-----------------------+----------------------+ + | Command Complete | | | + +------------------+-----------------------+----------------------+ + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 212] + +RFC 3720 iSCSI April 2004 + + +B.2. Write Operation Example + + +------------------+-----------------------+---------------------+ + |Initiator Function| PDU Type | Target Function | + +------------------+-----------------------+---------------------+ + | Command request |SCSI Command (WRITE)>>>| Receive command | + | (write) | | and queue it | + +------------------+-----------------------+---------------------+ + | | | Process old commands| + +------------------+-----------------------+---------------------+ + | | | Ready to process | + | | <<< R2T | WRITE command | + +------------------+-----------------------+---------------------+ + | Send Data | SCSI Data-Out >>> | Receive Data | + +------------------+-----------------------+---------------------+ + | | <<< R2T | Ready for data | + +------------------+-----------------------+---------------------+ + | | <<< R2T | Ready for data | + +------------------+-----------------------+---------------------+ + | Send Data | SCSI Data-Out >>> | Receive Data | + +------------------+-----------------------+---------------------+ + | Send Data | SCSI Data-Out >>> | Receive Data | + +------------------+-----------------------+---------------------+ + | | <<< SCSI Response |Send Status and Sense| + +------------------+-----------------------+---------------------+ + | Command Complete | | | + +------------------+-----------------------+---------------------+ + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 213] + +RFC 3720 iSCSI April 2004 + + +B.3. R2TSN/DataSN Use Examples + + Output (write) data DataSN/R2TSN Example + + +------------------+-----------------------+----------------------+ + |Initiator Function| PDU Type & Content | Target Function | + +------------------+-----------------------+----------------------+ + | Command request |SCSI Command (WRITE)>>>| Receive command | + | (write) | | and queue it | + +------------------+-----------------------+----------------------+ + | | | Process old commands | + +------------------+-----------------------+----------------------+ + | | <<< R2T | Ready for data | + | | R2TSN = 0 | | + +------------------+-----------------------+----------------------+ + | | <<< R2T | Ready for more data | + | | R2TSN = 1 | | + +------------------+-----------------------+----------------------+ + | Send Data | SCSI Data-Out >>> | Receive Data | + | for R2TSN 0 | DataSN = 0, F=0 | | + +------------------+-----------------------+----------------------+ + | Send Data | SCSI Data-Out >>> | Receive Data | + | for R2TSN 0 | DataSN = 1, F=1 | | + +------------------+-----------------------+----------------------+ + | Send Data | SCSI Data >>> | Receive Data | + | for R2TSN 1 | DataSN = 0, F=1 | | + +------------------+-----------------------+----------------------+ + | | <<< SCSI Response |Send Status and Sense | + | | ExpDataSN = 0 | | + +------------------+-----------------------+----------------------+ + | Command Complete | | | + +------------------+-----------------------+----------------------+ + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 214] + +RFC 3720 iSCSI April 2004 + + + Input (read) data DataSN Example + + +------------------+-----------------------+----------------------+ + |Initiator Function| PDU Type | Target Function | + +------------------+-----------------------+----------------------+ + | Command request |SCSI Command (READ)>>> | | + | (read) | | | + +------------------+-----------------------+----------------------+ + | | | Prepare Data Transfer| + +------------------+-----------------------+----------------------+ + | Receive Data | <<< SCSI Data-In | Send Data | + | | DataSN = 0, F=0 | | + +------------------+-----------------------+----------------------+ + | Receive Data | <<< SCSI Data-In | Send Data | + | | DataSN = 1, F=0 | | + +------------------+-----------------------+----------------------+ + | Receive Data | <<< SCSI Data-In | Send Data | + | | DataSN = 2, F=1 | | + +------------------+-----------------------+----------------------+ + | | <<< SCSI Response |Send Status and Sense | + | | ExpDataSN = 3 | | + +------------------+-----------------------+----------------------+ + | Command Complete | | | + +------------------+-----------------------+----------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 215] + +RFC 3720 iSCSI April 2004 + + + Bidirectional DataSN Example + + +------------------+-----------------------+----------------------+ + |Initiator Function| PDU Type | Target Function | + +------------------+-----------------------+----------------------+ + | Command request |SCSI Command >>> | | + | (Read-Write) | Read-Write | | + +------------------+-----------------------+----------------------+ + | | | Process old commands | + +------------------+-----------------------+----------------------+ + | | <<< R2T | Ready to process | + | | R2TSN = 0 | WRITE command | + +------------------+-----------------------+----------------------+ + | * Receive Data | <<< SCSI Data-In | Send Data | + | | DataSN = 1, F=0 | | + +------------------+-----------------------+----------------------+ + | * Receive Data | <<< SCSI Data-In | Send Data | + | | DataSN = 2, F=1 | | + +------------------+-----------------------+----------------------+ + | * Send Data | SCSI Data-Out >>> | Receive Data | + | for R2TSN 0 | DataSN = 0, F=1 | | + +------------------+-----------------------+----------------------+ + | | <<< SCSI Response |Send Status and Sense | + | | ExpDataSN = 3 | | + +------------------+-----------------------+----------------------+ + | Command Complete | | | + +------------------+-----------------------+----------------------+ + + *) Send data and Receive Data may be transferred simultaneously as in + an atomic Read-Old-Write-New or sequentially as in an atomic + Read-Update-Write (in the latter case the R2T may follow the received + data). + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 216] + +RFC 3720 iSCSI April 2004 + + + Unsolicited and immediate output (write) data with DataSN Example + + +------------------+-----------------------+----------------------+ + |Initiator Function| PDU Type & Content | Target Function | + +------------------+-----------------------+----------------------+ + | Command request |SCSI Command (WRITE)>>>| Receive command | + | (write) |F=0 | and data | + |+ Immediate data | | and queue it | + +------------------+-----------------------+----------------------+ + | Send Unsolicited | SCSI Write Data >>> | Receive more Data | + | Data | DataSN = 0, F=1 | | + +------------------+-----------------------+----------------------+ + | | | Process old commands | + +------------------+-----------------------+----------------------+ + | | <<< R2T | Ready for more data | + | | R2TSN = 0 | | + +------------------+-----------------------+----------------------+ + | Send Data | SCSI Write Data >>> | Receive Data | + | for R2TSN 0 | DataSN = 0, F=1 | | + +------------------+-----------------------+----------------------+ + | | <<< SCSI Response |Send Status and Sense | + | | | | + +------------------+-----------------------+----------------------+ + | Command Complete | | | + +------------------+-----------------------+----------------------+ + +B.4. CRC Examples + + N.B. all Values are Hexadecimal + + 32 bytes of zeroes: + + Byte: 0 1 2 3 + + 0: 00 00 00 00 + ... + 28: 00 00 00 00 + + CRC: aa 36 91 8a + + 32 bytes of ones: + + Byte: 0 1 2 3 + + 0: ff ff ff ff + ... + 28: ff ff ff ff + + + + +Satran, et al. Standards Track [Page 217] + +RFC 3720 iSCSI April 2004 + + + CRC: 43 ab a8 62 + + 32 bytes of incrementing 00..1f: + + Byte: 0 1 2 3 + + 0: 00 01 02 03 + ... + 28: 1c 1d 1e 1f + + CRC: 4e 79 dd 46 + + 32 bytes of decrementing 1f..00: + + Byte: 0 1 2 3 + + 0: 1f 1e 1d 1c + ... + 28: 03 02 01 00 + + CRC: 5c db 3f 11 + + An iSCSI - SCSI Read (10) Command PDU + + Byte: 0 1 2 3 + + 0: 01 c0 00 00 + 4: 00 00 00 00 + 8: 00 00 00 00 + 12: 00 00 00 00 + 16: 14 00 00 00 + 20: 00 00 04 00 + 24: 00 00 00 14 + 28: 00 00 00 18 + 32: 28 00 00 00 + 36: 00 00 00 00 + 40: 02 00 00 00 + 44: 00 00 00 00 + + CRC: 56 3a 96 d9 + + + + + + + + + + + +Satran, et al. Standards Track [Page 218] + +RFC 3720 iSCSI April 2004 + + +Appendix C. Login Phase Examples + + In the first example, the initiator and target authenticate each + other via Kerberos: + + I-> Login (CSG,NSG=0,1 T=1) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=KRB5,SRP,None + + T-> Login (CSG,NSG=0,0 T=0) + AuthMethod=KRB5 + + I-> Login (CSG,NSG=0,1 T=1) + KRB_AP_REQ= + + (krb_ap_req contains the Kerberos V5 ticket and authenticator + with MUTUAL-REQUIRED set in the ap-options field) + + If the authentication is successful, the target proceeds with: + + T-> Login (CSG,NSG=0,1 T=1) + KRB_AP_REP= + + (krb_ap_rep is the Kerberos V5 mutual authentication reply) + + If the authentication is successful, the initiator may proceed + with: + + I-> Login (CSG,NSG=1,0 T=0) FirstBurstLength=8192 + T-> Login (CSG,NSG=1,0 T=0) FirstBurstLength=4096 + MaxBurstLength=8192 + I-> Login (CSG,NSG=1,0 T=0) MaxBurstLength=8192 + ... more iSCSI Operational Parameters + + T-> Login (CSG,NSG=1,0 T=0) + ... more iSCSI Operational Parameters + + And at the end: + + I-> Login (CSG,NSG=1,3 T=1) + optional iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + + + + + + + +Satran, et al. Standards Track [Page 219] + +RFC 3720 iSCSI April 2004 + + + If the initiator's authentication by the target is not + successful, the target responds with: + + T-> Login "login reject" + + instead of the Login KRB_AP_REP message, and terminates the + connection. + + If the target's authentication by the initiator is not + successful, the initiator terminates the connection (without + responding to the Login KRB_AP_REP message). + + In the next example only the initiator is authenticated by the + target via Kerberos: + + I-> Login (CSG,NSG=0,1 T=1) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=SRP,KRB5,None + + T-> Login-PR (CSG,NSG=0,0 T=0) + AuthMethod=KRB5 + + I-> Login (CSG,NSG=0,1 T=1) + KRB_AP_REQ=krb_ap_req + + (MUTUAL-REQUIRED not set in the ap-options field of krb_ap_req) + + If the authentication is successful, the target proceeds with: + + T-> Login (CSG,NSG=0,1 T=1) + + I-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + T-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + . . . + + T-> Login (CSG,NSG=1,3 T=1)"login accept" + + + + + + + + + + +Satran, et al. Standards Track [Page 220] + +RFC 3720 iSCSI April 2004 + + + In the next example, the initiator and target authenticate each + other via SPKM1: + + I-> Login (CSG,NSG=0,1 T=1) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=SPKM1,KRB5,None + + T-> Login (CSG,NSG=0,0 T=0) + AuthMethod=SPKM1 + + I-> Login (CSG,NSG=0,0 T=0) + SPKM_REQ= + + (spkm-req is the SPKM-REQ token with the mutual-state bit in the + options field of the REQ-TOKEN set) + + T-> Login (CSG,NSG=0,0 T=0) + SPKM_REP_TI= + + If the authentication is successful, the initiator proceeds: + + I-> Login (CSG,NSG=0,1 T=1) + SPKM_REP_IT= + + If the authentication is successful, the target proceeds with: + + T-> Login (CSG,NSG=0,1 T=1) + + The initiator may proceed: + + I-> Login (CSG,NSG=1,0 T=0) ... iSCSI parameters + T-> Login (CSG,NSG=1,0 T=0) ... iSCSI parameters + + And at the end: + + I-> Login (CSG,NSG=1,3 T=1) + optional iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + + + If the target's authentication by the initiator is not + successful, the initiator terminates the connection (without + responding to the Login SPKM_REP_TI message). + + + + + + +Satran, et al. Standards Track [Page 221] + +RFC 3720 iSCSI April 2004 + + + If the initiator's authentication by the target is not + successful, the target responds with: + + T-> Login "login reject" + + instead of the Login "proceed and change stage" message, and + terminates the connection. + + + In the next example, the initiator and target authenticate each + other via SPKM2: + + I-> Login (CSG,NSG=0,0 T=0) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=SPKM1,SPKM2 + + T-> Login-PR (CSG,NSG=0,0 T=0) + AuthMethod=SPKM2 + + I-> Login (CSG,NSG=0,1 T=1) + SPKM_REQ= + + (spkm-req is the SPKM-REQ token with the mutual-state bit in the + options field of the REQ-TOKEN not set) + + If the authentication is successful, the target proceeds with: + + T-> Login (CSG,NSG=0,1 T=1) + + The initiator may proceed: + + I-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + T-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + And at the end: + + I-> Login (CSG,NSG=1,3 T=1) + optional iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + + + + + + + +Satran, et al. Standards Track [Page 222] + +RFC 3720 iSCSI April 2004 + + + In the next example, the initiator and target authenticate each + other via SRP: + + I-> Login (CSG,NSG=0,1 T=1) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=KRB5,SRP,None + + T-> Login-PR (CSG,NSG=0,0 T=0) + AuthMethod=SRP + + I-> Login (CSG,NSG=0,0 T=0) + SRP_U= + TargetAuth=Yes + + T-> Login (CSG,NSG=0,0 T=0) + SRP_GROUP=SRP-1536,SRP-1024 + SRP_s= + + I-> Login (CSG,NSG=0,0 T=0) + SRP_GROUP=SRP-1536 + SRP_A= + + T-> Login (CSG,NSG=0,0 T=0) + SRP_B= + + I-> Login (CSG,NSG=0,1 T=1) + SRP_M= + + If the initiator authentication is successful, the target + proceeds: + + T-> Login (CSG,NSG=0,1 T=1) + SRP_HM= + + Where N, g, s, A, B, M, and H(A | M | K) are defined in [RFC2945]. + + If the target authentication is not successful, the initiator + terminates the connection; otherwise, it proceeds. + + I-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + T-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + + + + + +Satran, et al. Standards Track [Page 223] + +RFC 3720 iSCSI April 2004 + + + And at the end: + + I-> Login (CSG,NSG=1,3 T=1) + optional iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + + If the initiator authentication is not successful, the target + responds with: + + T-> Login "login reject" + + Instead of the T-> Login SRP_HM= message and + terminates the connection. + + In the next example, the initiator and target authenticate each + other via SRP: + + I-> Login (CSG,NSG=0,1 T=1) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=KRB5,SRP,None + + T-> Login-PR (CSG,NSG=0,0 T=0) + AuthMethod=SRP + + I-> Login (CSG,NSG=0,0 T=0) + SRP_U= + TargetAuth=No + + T-> Login (CSG,NSG=0,0 T=0) + SRP_GROUP=SRP-1536 + SRP_s= + + I-> Login (CSG,NSG=0,0 T=0) + SRP_GROUP=SRP-1536 + SRP_A= + + T-> Login (CSG,NSG=0,0 T=0) + SRP_B= + + I-> Login (CSG,NSG=0,1 T=1) + SRP_M= + + If the initiator authentication is successful, the target + proceeds: + + T-> Login (CSG,NSG=0,1 T=1) + + + +Satran, et al. Standards Track [Page 224] + +RFC 3720 iSCSI April 2004 + + + + I-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + T-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + And at the end: + + I-> Login (CSG,NSG=1,3 T=1) + optional iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + + In the next example the initiator and target authenticate each other + via CHAP: + + I-> Login (CSG,NSG=0,0 T=0) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=KRB5,CHAP,None + + T-> Login-PR (CSG,NSG=0,0 T=0) + AuthMethod=CHAP + + I-> Login (CSG,NSG=0,0 T=0) + CHAP_A= + + T-> Login (CSG,NSG=0,0 T=0) + CHAP_A= + CHAP_I= + CHAP_C= + + I-> Login (CSG,NSG=0,1 T=1) + CHAP_N= + CHAP_R= + CHAP_I= + CHAP_C= + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 225] + +RFC 3720 iSCSI April 2004 + + + If the initiator authentication is successful, the target + proceeds: + + T-> Login (CSG,NSG=0,1 T=1) + CHAP_N= + CHAP_R= + + If the target authentication is not successful, the initiator + aborts the connection; otherwise, it proceeds. + + I-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + T-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + And at the end: + + I-> Login (CSG,NSG=1,3 T=1) + optional iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + + If the initiator authentication is not successful, the target + responds with: + + T-> Login "login reject" + + Instead of the Login CHAP_R= "proceed and change + stage" message and terminates the connection. + + In the next example, only the initiator is authenticated by the + target via CHAP: + + I-> Login (CSG,NSG=0,1 T=0) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=KRB5,CHAP,None + + T-> Login-PR (CSG,NSG=0,0 T=0) + AuthMethod=CHAP + + I-> Login (CSG,NSG=0,0 T=0) + CHAP_A= + + + + + + + + +Satran, et al. Standards Track [Page 226] + +RFC 3720 iSCSI April 2004 + + + T-> Login (CSG,NSG=0,0 T=0) + CHAP_A= + CHAP_I= + CHAP_C= + + I-> Login (CSG,NSG=0,1 T=1) + CHAP_N= + CHAP_R= + + If the initiator authentication is successful, the target + proceeds: + + T-> Login (CSG,NSG=0,1 T=1) + + I-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + T-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + And at the end: + + I-> Login (CSG,NSG=1,3 T=1) + optional iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + + In the next example, the initiator does not offer any security + parameters. It therefore may offer iSCSI parameters on the Login PDU + with the T bit set to 1, and the target may respond with a final + Login Response PDU immediately: + + I-> Login (CSG,NSG=1,3 T=1) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + ... iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + ... ISCSI parameters + + In the next example, the initiator does offer security + parameters on the Login PDU, but the target does not choose + any (i.e., chooses the "None" values): + + I-> Login (CSG,NSG=0,1 T=1) + InitiatorName=iqn.1999-07.com.os:hostid.77 + TargetName=iqn.1999-07.com.example:diskarray.sn.88 + AuthMethod=KRB5,SRP,None + + + +Satran, et al. Standards Track [Page 227] + +RFC 3720 iSCSI April 2004 + + + + T-> Login-PR (CSG,NSG=0,1 T=1) + AuthMethod=None + + I-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + T-> Login (CSG,NSG=1,0 T=0) + ... iSCSI parameters + + And at the end: + + I-> Login (CSG,NSG=1,3 T=1) + optional iSCSI parameters + + T-> Login (CSG,NSG=1,3 T=1) "login accept" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 228] + +RFC 3720 iSCSI April 2004 + + +Appendix D. SendTargets Operation + + To reduce the amount of configuration required on an initiator, iSCSI + provides the SendTargets text request. The initiator uses the + SendTargets request to get a list of targets to which it may have + access, as well as the list of addresses (IP address and TCP port) on + which these targets may be accessed. + + To make use of SendTargets, an initiator must first establish one of + two types of sessions. If the initiator establishes the session + using the key "SessionType=Discovery", the session is a discovery + session, and a target name does not need to be specified. Otherwise, + the session is a normal, operational session. The SendTargets + command MUST only be sent during the Full Feature Phase of a normal + or discovery session. + + A system that contains targets MUST support discovery sessions on + each of its iSCSI IP address-port pairs, and MUST support the + SendTargets command on the discovery session. In a discovery + session, a target MUST return all path information (target name and + IP address-port pairs and portal group tags) for the targets on the + target network entity which the requesting initiator is authorized to + access. + + A target MUST support the SendTargets command on operational + sessions; these will only return path information about the target to + which the session is connected, and do not need to return information + about other target names that may be defined in the responding + system. + + An initiator MAY make use of the SendTargets as it sees fit. + + A SendTargets command consists of a single Text request PDU. This + PDU contains exactly one text key and value. The text key MUST be + SendTargets. The expected response depends upon the value, as well + as whether the session is a discovery or operational session. + + The value must be one of: + + All + + The initiator is requesting that information on all relevant + targets known to the implementation be returned. This value + MUST be supported on a discovery session, and MUST NOT be + supported on an operational session. + + + + + + +Satran, et al. Standards Track [Page 229] + +RFC 3720 iSCSI April 2004 + + + + + If an iSCSI target name is specified, the session should respond + with addresses for only the named target, if possible. This + value MUST be supported on discovery sessions. A discovery + session MUST be capable of returning addresses for those + targets that would have been returned had value=All had been + designated. + + + + The session should only respond with addresses for the target to + which the session is logged in. This MUST be supported on + operational sessions, and MUST NOT return targets other than + the one to which the session is logged in. + + The response to this command is a text response that contains a list + of zero or more targets and, optionally, their addresses. Each + target is returned as a target record. A target record begins with + the TargetName text key, followed by a list of TargetAddress text + keys, and bounded by the end of the text response or the next + TargetName key, which begins a new record. No text keys other than + TargetName and TargetAddress are permitted within a SendTargets + response. + + For the format of the TargetName, see Section 12.4 TargetName. + + In a discovery session, a target MAY respond to a SendTargets request + with its complete list of targets, or with a list of targets that is + based on the name of the initiator logged in to the session. + + A SendTargets response MUST NOT contain target names if there are no + targets for the requesting initiator to access. + + Each target record returned includes zero or more TargetAddress + fields. + + Each target record starts with one text key of the form: + + TargetName= + + Followed by zero or more address keys of the form: + + TargetAddress=[:], + + + The hostname-or-ipaddress contains a domain name, IPv4 address, or + IPv6 address, as specified for the TargetAddress key. + + + +Satran, et al. Standards Track [Page 230] + +RFC 3720 iSCSI April 2004 + + + A hostname-or-ipaddress duplicated in TargetAddress responses for a + given node (the port is absent or equal) would probably indicate that + multiple address families are in use at once (IPV6 and IPV4). + + Each TargetAddress belongs to a portal group, identified by its + numeric portal group tag (as in Section 12.9 TargetPortalGroupTag). + The iSCSI target name, together with this tag, constitutes the SCSI + port identifier; the tag only needs to be unique within a given + target's name list of addresses. + + Multiple-connection sessions can span iSCSI addresses that belong to + the same portal group. + + Multiple-connection sessions cannot span iSCSI addresses that belong + to different portal groups. + + If a SendTargets response reports an iSCSI address for a target, it + SHOULD also report all other addresses in its portal group in the + same response. + + A SendTargets text response can be longer than a single Text Response + PDU, and makes use of the long text responses as specified. + + After obtaining a list of targets from the discovery target session, + an iSCSI initiator may initiate new sessions to log in to the + discovered targets for full operation. The initiator MAY keep the + discovery session open, and MAY send subsequent SendTargets commands + to discover new targets. + + Examples: + + This example is the SendTargets response from a single target that + has no other interface ports. + + Initiator sends text request that contains: + + SendTargets=All + + Target sends a text response that contains: + + TargetName=iqn.1993-11.com.example:diskarray.sn.8675309 + + All the target had to return in the simple case was the target name. + It is assumed by the initiator that the IP address and TCP port for + this target are the same as used on the current connection to the + default iSCSI target. + + + + + +Satran, et al. Standards Track [Page 231] + +RFC 3720 iSCSI April 2004 + + + The next example has two internal iSCSI targets, each accessible via + two different ports with different IP addresses. The following is + the text response: + + TargetName=iqn.1993-11.com.example:diskarray.sn.8675309 + TargetAddress=10.1.0.45:3000,1 TargetAddress=10.1.1.45:3000,2 + TargetName=iqn.1993-11.com.example:diskarray.sn.1234567 + TargetAddress=10.1.0.45:3000,1 TargetAddress=10.1.1.45:3000,2 + + Both targets share both addresses; the multiple addresses are likely + used to provide multi-path support. The initiator may connect to + either target name on either address. Each of the addresses has its + own portal group tag; they do not support spanning + multiple-connection sessions with each other. Keep in mind that the + portal group tags for the two named targets are independent of one + another; portal group "1" on the first target is not necessarily the + same as portal group "1" on the second target. + + In the above example, a DNS host name or an IPv6 address could have + been returned instead of an IPv4 address. + + The next text response shows a target that supports spanning sessions + across multiple addresses, and further illustrates the use of the + portal group tags: + + TargetName=iqn.1993-11.com.example:diskarray.sn.8675309 + + TargetAddress=10.1.0.45:3000,1 TargetAddress=10.1.1.46:3000,1 + TargetAddress=10.1.0.47:3000,2 TargetAddress=10.1.1.48:3000,2 + TargetAddress=10.1.1.49:3000,3 + + In this example, any of the target addresses can be used to reach the + same target. A single-connection session can be established to any + of these TCP addresses. A multiple-connection session could span + addresses .45 and .46 or .47 and .48, but cannot span any other + combination. A TargetAddress with its own tag (.49) cannot be + combined with any other address within the same session. + + This SendTargets response does not indicate whether .49 supports + multiple connections per session; it is communicated via the + MaxConnections text key upon login to the target. + + + + + + + + + + +Satran, et al. Standards Track [Page 232] + +RFC 3720 iSCSI April 2004 + + +Appendix E. Algorithmic Presentation of Error Recovery Classes + + This appendix illustrates the error recovery classes using a + pseudo-programming-language. The procedure names are chosen to be + obvious to most implementers. Each of the recovery classes described + has initiator procedures as well as target procedures. These + algorithms focus on outlining the mechanics of error recovery + classes, and do not exhaustively describe all other aspects/cases. + Examples of this approach are: + + + - Handling for only certain Opcode types is shown. + + - Only certain reason codes (e.g., Recovery in Logout command) + are outlined. + + - Resultant cases, such as recovery of Synchronization on a + header digest error are considered out-of-scope in these + algorithms. In this particular example, a header digest error + may lead to connection recovery if some type of sync and + steering layer is not implemented. + + These algorithms strive to convey the iSCSI error recovery concepts + in the simplest terms, and are not designed to be optimal. + +E.1. General Data Structure and Procedure Description + + This section defines the procedures and data structures that are + commonly used by all the error recovery algorithms. The structures + may not be the exhaustive representations of what is required for a + typical implementation. + + Data structure definitions - + struct TransferContext { + int TargetTransferTag; + int ExpectedDataSN; + }; + + struct TCB { /* task control block */ + Boolean SoFarInOrder; + int ExpectedDataSN; /* used for both R2Ts, and Data */ + int MissingDataSNList[MaxMissingDPDU]; + Boolean FbitReceived; + Boolean StatusXferd; + Boolean CurrentlyAllegiant; + int ActiveR2Ts; + int Response; + char *Reason; + + + +Satran, et al. Standards Track [Page 233] + +RFC 3720 iSCSI April 2004 + + + struct TransferContext + TransferContextList[MaxOutStandingR2T]; + int InitiatorTaskTag; + int CmdSN; + + int SNACK_Tag; + + }; + + struct Connection { + struct Session SessionReference; + Boolean SoFarInOrder; + int CID; + int State; + + int CurrentTimeout; + int ExpectedStatSN; + int MissingStatSNList[MaxMissingSPDU]; + Boolean PerformConnectionCleanup; + }; + + struct Session { + int NumConnections; + int CmdSN; + int Maxconnections; + int ErrorRecoveryLevel; + struct iSCSIEndpoint OtherEndInfo; + struct Connection ConnectionList[MaxSupportedConns]; + }; + + Procedure descriptions - + Receive-a-In-PDU(transport connection, inbound PDU); + check-basic-validity(inbound PDU); + Start-Timer(timeout handler, argument, timeout value); + Build-And-Send-Reject(transport connection, bad PDU, reason code); + +E.2. Within-command Error Recovery Algorithms + +E.2.1. Procedure Descriptions + + Recover-Data-if-Possible(last required DataSN, task control + block); + Build-And-Send-DSnack(task control block); + Build-And-Send-RDSnack(task control block); + Build-And-Send-Abort(task control block); + SCSI-Task-Completion(task control block); + Build-And-Send-A-Data-Burst(transport connection, data-descriptor, + task control block); + + + +Satran, et al. Standards Track [Page 234] + +RFC 3720 iSCSI April 2004 + + + Build-And-Send-R2T(transport connection, data-descriptor, + task control block); + Build-And-Send-Status(transport connection, task control block); + Transfer-Context-Timeout-Handler(transfer context); + + + Notes: + + - One procedure used in this section: Handle-Status-SNACK- + request is defined in Within-connection recovery algorithms. + + - The Response processing pseudo-code, shown in the target + algorithms, applies to all solicited PDUs that carry StatSN - + SCSI Response, Text Response etc. + +E.2.2. Initiator Algorithms + +Recover-Data-if-Possible(LastRequiredDataSN, TCB) +{ + if (operational ErrorRecoveryLevel > 0) { + if (# of missing PDUs is trackable) { + Note the missing DataSNs in TCB. + if (the task spanned a change in + MaxRecvDataSegmentLength) { + if (TCB.StatusXferd is TRUE) + drop the status PDU; + Build-And-Send-RDSnack(TCB); + } else { + Build-And-Send-DSnack(TCB); + } + } else { + TCB.Reason = "Protocol service CRC error"; + } + } else { + TCB.Reason = "Protocol service CRC error"; + } + if (TCB.Reason == "Protocol service CRC error") { + Clear the missing PDU list in the TCB. + if (TCB.StatusXferd is not TRUE) + Build-And-Send-Abort(TCB); + } +} + +Receive-a-In-PDU(Connection, CurrentPDU) +{ + check-basic-validity(CurrentPDU); + if (Header-Digest-Bad) discard, return; + Retrieve TCB for CurrentPDU.InitiatorTaskTag. + + + +Satran, et al. Standards Track [Page 235] + +RFC 3720 iSCSI April 2004 + + + if ((CurrentPDU.type == Data) + or (CurrentPDU.type = R2T)) { + if (Data-Digest-Bad for Data) { + send-data-SNACK = TRUE; + LastRequiredDataSN = CurrentPDU.DataSN; + } else { + if (TCB.SoFarInOrder = TRUE) { + if (current DataSN is expected) { + Increment TCB.ExpectedDataSN. + } else { + + TCB.SoFarInOrder = FALSE; + send-data-SNACK = TRUE; + } + } else { + if (current DataSN was considered missing) { + remove current DataSN from missing PDU list. + } else if (current DataSN is higher than expected) +{ + send-data-SNACK = TRUE; + } else { + discard, return; + } + Adjust TCB.ExpectedDataSN if appropriate. + } + LastRequiredDataSN = CurrentPDU.DataSN - 1; + } + if (send-data-SNACK is TRUE and + task is not already considered failed) { + Recover-Data-if-Possible(LastRequiredDataSN, TCB); + } + if (missing data PDU list is empty) { + TCB.SoFarInOrder = TRUE; + } + if (CurrentPDU.type == R2T) { + Increment ActiveR2Ts for this task. + + Create a data-descriptor for the data burst. + Build-And-Send-A-Data-Burst(Connection, data-descriptor, + + TCB); + } + } else if (CurrentPDU.type == Response) { + if (Data-Digest-Bad) { + send-status-SNACK = TRUE; + } else { + TCB.StatusXferd = TRUE; + Store the status information in TCB. + + + +Satran, et al. Standards Track [Page 236] + +RFC 3720 iSCSI April 2004 + + + if (ExpDataSN does not match) { + TCB.SoFarInOrder = FALSE; + Recover-Data-if-Possible(current DataSN, TCB); + } + if (missing data PDU list is empty) { + TCB.SoFarInOrder = TRUE; + } + } + } else { /* REST UNRELATED TO WITHIN-COMMAND-RECOVERY, NOT + SHOWN */ + } + if ((TCB.SoFarInOrder == TRUE) and + (TCB.StatusXferd == TRUE)) { + SCSI-Task-Completion(TCB); + } +} + +E.2.3. Target Algorithms + +Receive-a-In-PDU(Connection, CurrentPDU) +{ + check-basic-validity(CurrentPDU); + if (Header-Digest-Bad) discard, return; + Retrieve TCB for CurrentPDU.InitiatorTaskTag. + if (CurrentPDU.type == Data) { + Retrieve TContext from CurrentPDU.TargetTransferTag; + if (Data-Digest-Bad) { + Build-And-Send-Reject(Connection, CurrentPDU, + Payload-Digest-Error); + Note the missing data PDUs in MissingDataRange[]. + send-recovery-R2T = TRUE; + } else { + if (current DataSN is not expected) { + Note the missing data PDUs in MissingDataRange[]. + send-recovery-R2T = TRUE; + } + if (CurrentPDU.Fbit == TRUE) { + if (current PDU is solicited) { + Decrement TCB.ActiveR2Ts. + } + if ((current PDU is unsolicited and + data received is less than I/O length and + data received is less than FirstBurstLength) + or (current PDU is solicited and the length of + this burst is less than expected)) { + send-recovery-R2T = TRUE; + Note the missing data in MissingDataRange[]. + } + + + +Satran, et al. Standards Track [Page 237] + +RFC 3720 iSCSI April 2004 + + + } + } + Increment TContext.ExpectedDataSN. + if (send-recovery-R2T is TRUE and + task is not already considered failed) { + if (operational ErrorRecoveryLevel > 0) { + Increment TCB.ActiveR2Ts. + Create a data-descriptor for the data burst + from MissingDataRange. + Build-And-Send-R2T(Connection, data-descriptor, TCB); + } else { + if (current PDU is the last unsolicited) + TCB.Reason = "Not enough unsolicited data"; + else + TCB.Reason = "Protocol service CRC error"; + } + } + if (TCB.ActiveR2Ts == 0) { + Build-And-Send-Status(Connection, TCB); + } + } else if (CurrentPDU.type == SNACK) { + snack-failure = FALSE; + if (operational ErrorRecoveryLevel > 0) { + if (CurrentPDU.type == Data/R2T) { + if (the request is satisfiable) { + + if (request for Data) { + Create a data-descriptor for the data burst + from BegRun and RunLength. + Build-And-Send-A-Data-Burst(Connection, + + data-descriptor, TCB); + } else { /* R2T */ + Create a data-descriptor for the data burst + from BegRun and RunLength. + Build-And-Send-R2T(Connection, data-descriptor, + TCB); + } + } else { + snack-failure = TRUE; + } + } else if (CurrentPDU.type == status) { + Handle-Status-SNACK-request(Connection, CurrentPDU); + } else if (CurrentPDU.type == DataACK) { + Consider all data upto CurrentPDU.BegRun as + acknowledged. + Free up the retransmission resources for that data. + } else if (CurrentPDU.type == R-Data SNACK) { + + + +Satran, et al. Standards Track [Page 238] + +RFC 3720 iSCSI April 2004 + + + Create a data descriptor for a data burst covering + all unacknowledged data. + Build-And-Send-A-Data-Burst(Connection, + data-descriptor, TCB); + TCB.SNACK_Tag = CurrentPDU.SNACK_Tag; + if (there's no more data to send) { + Build-And-Send-Status(Connection, TCB); + } + } + } else { /* operational ErrorRecoveryLevel = 0 */ + snack-failure = TRUE; + + } + if (snack-failure == TRUE) { + Build-And-Send-Reject(Connection, CurrentPDU, + SNACK-Reject); + if (TCB.StatusXferd != TRUE) { + TCB.Reason = "SNACK Rejected"; + Build-And-Send-Status(Connection, TCB); + } + } + + } else { /* REST UNRELATED TO WITHIN-COMMAND-RECOVERY, NOT SHOWN */ + } +} + +Transfer-Context-Timeout-Handler(TContext) +{ + Retrieve TCB and Connection from TContext. + Decrement TCB.ActiveR2Ts. + if (operational ErrorRecoveryLevel > 0 and + task is not already considered failed) { + Note the missing data PDUs in MissingDataRange[]. + Create a data-descriptor for the data burst + from MissingDataRange[]. + Build-And-Send-R2T(Connection, data-descriptor, TCB); + } else { + TCB.Reason = "Protocol service CRC error"; + if (TCB.ActiveR2Ts = 0) { + Build-And-Send-Status(Connection, TCB); + } + } +} + + + + + + + + +Satran, et al. Standards Track [Page 239] + +RFC 3720 iSCSI April 2004 + + +E.3. Within-connection Recovery Algorithms + +E.3.1. Procedure Descriptions + +Procedure descriptions: +Recover-Status-if-Possible(transport connection, + currently received PDU); +Evaluate-a-StatSN(transport connection, currently received PDU); +Retransmit-Command-if-Possible(transport connection, CmdSN); +Build-And-Send-SSnack(transport connection); +Build-And-Send-Command(transport connection, task control block); +Command-Acknowledge-Timeout-Handler(task control block); +Status-Expect-Timeout-Handler(transport connection); +Build-And-Send-Nop-Out(transport connection); +Handle-Status-SNACK-request(transport connection, status SNACK +PDU); +Retransmit-Status-Burst(status SNACK, task control block); +Is-Acknowledged(beginning StatSN, run length); + +Implementation-specific tunables: +InitiatorProactiveSNACKEnabled + + Notes: + + - The initiator algorithms only deal with unsolicited Nop-In PDUs + for generating status SNACKs. A solicited Nop-In PDU has an + assigned StatSN, which, when out of order, could trigger the + out of order StatSN handling in Within-command algorithms, + again leading to Recover-Status-if-Possible. + + + - The pseudo-code shown may result in the retransmission of + unacknowledged commands in more cases than necessary. This + will not, however, affect the correctness of the operation + because the target is required to discard the duplicate CmdSNs. + + - The procedure Build-And-Send-Async is defined in the Connection + recovery algorithms. + + - The procedure Status-Expect-Timeout-Handler describes how + initiators may proactively attempt to retrieve the Status if + they so choose. This procedure is assumed to be triggered much + before the standard ULP timeout. + + + + + + + + +Satran, et al. Standards Track [Page 240] + +RFC 3720 iSCSI April 2004 + + +E.3.2. Initiator Algorithms + +Recover-Status-if-Possible(Connection, CurrentPDU) +{ + if ((Connection.state == LOGGED_IN) and + connection is not already considered failed) { + if (operational ErrorRecoveryLevel > 0) { + if (# of missing PDUs is trackable) { + Note the missing StatSNs in Connection + that were not already requested with SNACK; + Build-And-Send-SSnack(Connection); + } else { + Connection.PerformConnectionCleanup = TRUE; + } + } else { + Connection.PerformConnectionCleanup = TRUE; + } + if (Connection.PerformConnectionCleanup == TRUE) { + Start-Timer(Connection-Cleanup-Handler, Connection, 0); + } + } +} + +Retransmit-Command-if-Possible(Connection, CmdSN) +{ + + if (operational ErrorRecoveryLevel > 0) { + Retrieve the InitiatorTaskTag, and thus TCB for the CmdSN. + Build-And-Send-Command(Connection, TCB); + } +} + +Evaluate-a-StatSN(Connection, CurrentPDU) +{ + send-status-SNACK = FALSE; + if (Connection.SoFarInOrder == TRUE) { + if (current StatSN is the expected) { + Increment Connection.ExpectedStatSN. + } else { + Connection.SoFarInOrder = FALSE; + send-status-SNACK = TRUE; + } + } else { + if (current StatSN was considered missing) { + remove current StatSN from the missing list. + } else { + if (current StatSN is higher than expected){ + send-status-SNACK = TRUE; + + + +Satran, et al. Standards Track [Page 241] + +RFC 3720 iSCSI April 2004 + + + } else { + send-status-SNACK = FALSE; + discard the PDU; + } + } + Adjust Connection.ExpectedStatSN if appropriate. + if (missing StatSN list is empty) { + Connection.SoFarInOrder = TRUE; + } + } + return send-status-SNACK; +} + +Receive-a-In-PDU(Connection, CurrentPDU) +{ + check-basic-validity(CurrentPDU); + if (Header-Digest-Bad) discard, return; + Retrieve TCB for CurrentPDU.InitiatorTaskTag. + if (CurrentPDU.type == Nop-In) { + if (the PDU is unsolicited) { + if (current StatSN is not expected) { + Recover-Status-if-Possible(Connection, + CurrentPDU); + } + if (current ExpCmdSN is not Session.CmdSN) { + Retransmit-Command-if-Possible(Connection, + CurrentPDU.ExpCmdSN); + } + } + } else if (CurrentPDU.type == Reject) { + if (it is a data digest error on immediate data) { + Retransmit-Command-if-Possible(Connection, + CurrentPDU.BadPDUHeader.CmdSN); + } + } else if (CurrentPDU.type == Response) { + send-status-SNACK = Evaluate-a-StatSN(Connection, + CurrentPDU); + if (send-status-SNACK == TRUE) + Recover-Status-if-Possible(Connection, CurrentPDU); + } else { /* REST UNRELATED TO WITHIN-CONNECTION-RECOVERY, + * NOT SHOWN */ + } +} + +Command-Acknowledge-Timeout-Handler(TCB) +{ + Retrieve the Connection for TCB. + Retransmit-Command-if-Possible(Connection, TCB.CmdSN); + + + +Satran, et al. Standards Track [Page 242] + +RFC 3720 iSCSI April 2004 + + +} + +Status-Expect-Timeout-Handler(Connection) +{ + if (operational ErrorRecoveryLevel > 0) { + Build-And-Send-Nop-Out(Connection); + } else if (InitiatorProactiveSNACKEnabled){ + if ((Connection.state == LOGGED_IN) and + connection is not already considered failed) { + Build-And-Send-SSnack(Connection); + } + } +} + +E.3.3. Target Algorithms + +Handle-Status-SNACK-request(Connection, CurrentPDU) +{ + if (operational ErrorRecoveryLevel > 0) { + if (request for an acknowledged run) { + Build-And-Send-Reject(Connection, CurrentPDU, + Protocol-Error); + } else if (request for an untransmitted run) { + discard, return; + } else { + Retransmit-Status-Burst(CurrentPDU, TCB); + } else { + Build-And-Send-Async(Connection, DroppedConnection, + DefaultTime2Wait, + DefaultTime2Retain); + } +} + +E.4. Connection Recovery Algorithms + +E.4.1. Procedure Descriptions + +Build-And-Send-Async(transport connection, reason code, + minimum time, maximum time); +Pick-A-Logged-In-Connection(session); +Build-And-Send-Logout(transport connection, logout connection + identifier, reason code); +PerformImplicitLogout(transport connection, logout connection + identifier, target information); +PerformLogin(transport connection, target information); +CreateNewTransportConnection(target information); +Build-And-Send-Command(transport connection, task control block); +Connection-Cleanup-Handler(transport connection); + + + +Satran, et al. Standards Track [Page 243] + +RFC 3720 iSCSI April 2004 + + +Connection-Resource-Timeout-Handler(transport connection); +Quiesce-And-Prepare-for-New-Allegiance(session, task control +block); +Build-And-Send-Logout-Response(transport connection, + CID of connection in recovery, reason +code); +Build-And-Send-TaskMgmt-Response(transport connection, + task mgmt command PDU, response code); +Establish-New-Allegiance(task control block, transport +connection); +Schedule-Command-To-Continue(task control block); + +Notes: + - Transport exception conditions, such as unexpected connection + termination, connection reset, and hung connection while the + connection is in the full-feature phase, are all assumed to be + asynchronously signaled to the iSCSI layer using the + Transport_Exception_Handler procedure. + +E.4.2. Initiator Algorithms + + Receive-a-In-PDU(Connection, CurrentPDU) { + check-basic-validity(CurrentPDU); + if (Header-Digest-Bad) discard, return; + + Retrieve TCB from CurrentPDU.InitiatorTaskTag. + if (CurrentPDU.type == Async) { + if (CurrentPDU.AsyncEvent == ConnectionDropped) { + Retrieve the AffectedConnection for + CurrentPDU.Parameter1. + AffectedConnection.CurrentTimeout = + CurrentPDU.Parameter3; + AffectedConnection.State = CLEANUP_WAIT; + Start-Timer(Connection-Cleanup-Handler, + AffectedConnection, + CurrentPDU.Parameter2); + } else if (CurrentPDU.AsyncEvent == LogoutRequest)) { + AffectedConnection = Connection; + AffectedConnection.State = LOGOUT_REQUESTED; + AffectedConnection.PerformConnectionCleanup = TRUE; + AffectedConnection.CurrentTimeout = + CurrentPDU.Parameter3; + Start-Timer(Connection-Cleanup-Handler, + AffectedConnection, 0); + } else if (CurrentPDU.AsyncEvent == SessionDropped)) { + for (each Connection) { + Connection.State = CLEANUP_WAIT; + Connection.CurrentTimeout = CurrentPDU.Parameter3; + + + +Satran, et al. Standards Track [Page 244] + +RFC 3720 iSCSI April 2004 + + + Start-Timer(Connection-Cleanup-Handler, + Connection, CurrentPDU.Parameter2); + } + Session.state = FAILED; + } + + } else if (CurrentPDU.type == LogoutResponse) { + Retrieve the CleanupConnection for CurrentPDU.CID. + if (CurrentPDU.Response = failure) { + CleanupConnection.State = CLEANUP_WAIT; + } else { + CleanupConnection.State = FREE; + } + } else if (CurrentPDU.type == LoginResponse) { + if (this is a response to an implicit Logout) { + Retrieve the CleanupConnection. + if (successful) { + CleanupConnection.State = FREE; + Connection.State = LOGGED_IN; + } else { + CleanupConnection.State = CLEANUP_WAIT; + DestroyTransportConnection(Connection); + } + } + } else { /* REST UNRELATED TO CONNECTION-RECOVERY, + + * NOT SHOWN */ + } + if (CleanupConnection.State == FREE) { + for (each command that was active on CleanupConnection) { + /* Establish new connection allegiance */ + NewConnection = Pick-A-Logged-In-Connection(Session); + Build-And-Send-Command(NewConnection, TCB); + } + } } + + Connection-Cleanup-Handler(Connection) { + Retrieve Session from Connection. + if (Connection can still exchange iSCSI PDUs) { + NewConnection = Connection; + } else { + Start-Timer(Connection-Resource-Timeout-Handler, + Connection, Connection.CurrentTimeout); + if (there are other logged-in connections) { + NewConnection = Pick-A-Logged-In- + Connection(Session); + } else { + NewConnection = + + + +Satran, et al. Standards Track [Page 245] + +RFC 3720 iSCSI April 2004 + + + CreateTransportConnection(Session.OtherEndInfo); + Initiate an implicit Logout on NewConnection for + Connection.CID. + return; + } + } + Build-And-Send-Logout(NewConnection, Connection.CID, + RecoveryRemove); } + + Transport_Exception_Handler(Connection) { + Connection.PerformConnectionCleanup = TRUE; + if (the event is an unexpected transport disconnect) { + Connection.State = CLEANUP_WAIT; + + Connection.CurrentTimeout = DefaultTime2Retain; + Start-Timer(Connection-Cleanup-Handler, Connection, + DefaultTime2Wait); + + } else { + Connection.State = FREE; + } } + +E.4.3. Target Algorithms + + Receive-a-In-PDU(Connection, CurrentPDU) + { + check-basic-validity(CurrentPDU); + if (Header-Digest-Bad) discard, return; + else if (Data-Digest-Bad) { + Build-And-Send-Reject(Connection, CurrentPDU, + Payload-Digest-Error); + discard, return; + } + Retrieve TCB and Session. + if (CurrentPDU.type == Logout) { + if (CurrentPDU.ReasonCode = RecoveryRemove) { + Retrieve the CleanupConnection from CurrentPDU.CID). + for (each command active on CleanupConnection) { + Quiesce-And-Prepare-for-New-Allegiance(Session, + TCB); + TCB.CurrentlyAllegiant = FALSE; + } + Cleanup-Connection-State(CleanupConnection); + if ((quiescing successful) and (cleanup successful)) { + Build-And-Send-Logout-Response(Connection, + CleanupConnection.CID, Success); + } else { + Build-And-Send-Logout-Response(Connection, + + + +Satran, et al. Standards Track [Page 246] + +RFC 3720 iSCSI April 2004 + + + CleanupConnection.CID, Failure); + } + } + } else if ((CurrentPDU.type == Login) and + operational ErrorRecoveryLevel == 2) { + Retrieve the CleanupConnection from CurrentPDU.CID). + for (each command active on CleanupConnection) { + Quiesce-And-Prepare-for-New-Allegiance(Session, TCB); + TCB.CurrentlyAllegiant = FALSE; + } + Cleanup-Connection-State(CleanupConnection); + if ((quiescing successful) and (cleanup successful)) { + Continue with the rest of the Login processing; + } else { + Build-And-Send-Login-Response(Connection, + CleanupConnection.CID, Target Error); + } + } + + } else if (CurrentPDU.type == TaskManagement) { + if (CurrentPDU.function == "TaskReassign") { + if (Session.ErrorRecoveryLevel < 2) { + Build-And-Send-TaskMgmt-Response(Connection, + CurrentPDU, "Allegiance reassignment + not supported"); + } else if (task is not found) { + Build-And-Send-TaskMgmt-Response(Connection, + CurrentPDU, "Task not in task set"); + } else if (task is currently allegiant) { + Build-And-Send-TaskMgmt-Response(Connection, + CurrentPDU, "Task still allegiant"); + } else { + Establish-New-Allegiance(TCB, Connection); + TCB.CurrentlyAllegiant = TRUE; + Schedule-Command-To-Continue(TCB); + } + } + } else { /* REST UNRELATED TO CONNECTION-RECOVERY, + * NOT SHOWN */ + } + } + + Transport_Exception_Handler(Connection) + { + Connection.PerformConnectionCleanup = TRUE; + if (the event is an unexpected transport disconnect) { + Connection.State = CLEANUP_WAIT; + Start-Timer(Connection-Resource-Timeout-Handler, + + + +Satran, et al. Standards Track [Page 247] + +RFC 3720 iSCSI April 2004 + + + Connection, + + (DefaultTime2Wait+DefaultTime2Retain)); + if (this Session has full-feature phase connections + left) + { + DifferentConnection = + Pick-A-Logged-In-Connection(Session); + Build-And-Send-Async(DifferentConnection, + DroppedConnection, DefaultTime2Wait, + DefaultTime2Retain); + } + } else { + Connection.State = FREE; + } + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 248] + +RFC 3720 iSCSI April 2004 + + +Appendix F. Clearing Effects of Various Events on Targets + +F.1. Clearing Effects on iSCSI Objects + + The following tables describe the target behavior on receiving the + events specified in the rows of the table. The second table is an + extension of the first table and defines clearing actions for more + objects on the same events. The legend is: + + Y = Yes (cleared/discarded/reset on the event specified in the + row). Unless otherwise noted, the clearing action is only + applicable for the issuing initiator port. + N = No (not affected on the event specified in the row, i.e., + stays at previous value). + NA = Not Applicable or Not Defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 249] + +RFC 3720 iSCSI April 2004 + + + +-----+-----+-----+-----+-----+ + |IT(1)|IC(2)|CT(5)|ST(6)|PP(7)| + +---------------------+-----+-----+-----+-----+-----+ + |connection failure(8)|Y |Y |N |N |Y | + +---------------------+-----+-----+-----+-----+-----+ + |connection state |NA |NA |Y |N |NA | + |timeout (9) | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |session timeout/ |Y |Y |Y |Y |Y(14)| + |closure/reinstatement| | | | | | + |(10) | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |session continuation |NA |NA |N(11)|N |NA | + |(12) | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |successful connection|Y |Y |Y |N |Y(13)| + |close logout | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |session failure (18) |Y |Y |N |N |Y | + +---------------------+-----+-----+-----+-----+-----+ + |successful recovery |Y |Y |N |N |Y(13)| + |Logout | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |failed Logout |Y |Y |N |N |Y | + +---------------------+-----+-----+-----+-----+-----+ + |connection Login |NA |NA |NA |Y(15)|NA | + |(leading) | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |connection Login |NA |NA |N(11)|N |Y | + |(non-leading) | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |target cold reset(16)|Y |Y |Y |Y |Y | + +---------------------+-----+-----+-----+-----+-----+ + |target warm reset(16)|Y |Y |Y |Y |Y | + +---------------------+-----+-----+-----+-----+-----+ + |LU reset(19) |Y |Y |Y |Y |Y | + +---------------------+-----+-----+-----+-----+-----+ + |powercycle(16) |Y |Y |Y |Y |Y | + +---------------------+-----+-----+-----+-----+-----+ + + 1. Incomplete TTTs - Target Transfer Tags on which the target is + still expecting PDUs to be received. Examples include TTTs received + via R2T, NOP-IN, etc. + + 2. Immediate Commands - immediate commands, but waiting for + execution on a target. For example, Abort Task Set. + + + + + +Satran, et al. Standards Track [Page 250] + +RFC 3720 iSCSI April 2004 + + + 5. Connection Tasks - tasks that are active on the iSCSI connection + in question. + + 6. Session Tasks - tasks that are active on the entire iSCSI + session. A union of "connection tasks" on all participating + connections. + + 7. Partial PDUs (if any) - PDUs that are partially sent and waiting + for transport window credit to complete the transmission. + + 8. Connection failure is a connection exception condition - one of + the transport connections shutdown, transport connections reset, or + transport connections timed out, which abruptly terminated the iSCSI + full-feature phase connection. A connection failure always takes the + connection state machine to the CLEANUP_WAIT state. + + 9. Connection state timeout happens if a connection spends more time + that agreed upon during Login negotiation in the CLEANUP_WAIT state, + and this takes the connection to the FREE state (M1 transition in + connection cleanup state diagram). + + 10. These are defined in Section 5.3.5 Session Reinstatement, + Closure, and Timeout. + + 11. This clearing effect is "Y" only if it is a connection + reinstatement and the operational ErrorRecoveryLevel is less than 2. + + 12. Session continuation is defined in Section 5.3.6 Session + Continuation and Failure. + + 13. This clearing effect is only valid if the connection is being + logged out on a different connection and when the connection being + logged out on the target may have some partial PDUs pending to be + sent. In all other cases, the effect is "NA". + + 14. This clearing effect is only valid for a "close the session" + logout in a multi-connection session. In all other cases, the effect + is "NA". + + 15. Only applicable if this leading connection login is a session + reinstatement. If this is not the case, it is "NA". + + 16. This operation affects all logged-in initiators. + + 18. Session failure is defined in Section 5.3.6 Session Continuation + and Failure. + + + + + +Satran, et al. Standards Track [Page 251] + +RFC 3720 iSCSI April 2004 + + + 19. This operation affects all logged-in initiators and the clearing + effects are only applicable to the LU being reset. + + +-----+-----+-----+-----+-----+ + |DC(1)|DD(2)|SS(3)|CS(4)|DS(5)| + +---------------------+-----+-----+-----+-----+-----+ + |connection failure |N |Y |N |N |N | + +---------------------+-----+-----+-----+-----+-----+ + |connection state |Y |NA |Y |N |NA | + |timeout | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |session timeout/ |Y |Y |Y(7) |Y |NA | + |closure/reinstatement| | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |session continuation |N(11)|NA*12|NA |N |NA*13| + +---------------------+-----+-----+-----+-----+-----+ + |successful connection|Y |Y |Y |N |NA | + |close Logout | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |session failure |N |Y |N |N |N | + +---------------------+-----+-----+-----+-----+-----+ + |successful recovery |Y |Y |Y |N |N | + |Logout | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |failed Logout |N |Y(9) |N |N |N | + +---------------------+-----+-----+-----+-----+-----+ + |connection Login |NA |NA |N(8) |N(8) |NA | + |(leading | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |connection Login |N(11)|NA*12|N(8) |N |NA*13| + |(non-leading) | | | | | | + +---------------------+-----+-----+-----+-----+-----+ + |target cold reset |Y |Y |Y |Y(10)|NA | + +---------------------+-----+-----+-----+-----+-----+ + |target warm reset |Y |Y |N |N |NA | + +---------------------+-----+-----+-----+-----+-----+ + |LU reset |N |Y |N |N |N | + +---------------------+-----+-----+-----+-----+-----+ + |powercycle |Y |Y |Y |Y(10)|NA | + +---------------------+-----+-----+-----+-----+-----+ + + 1. Discontiguous Commands - commands allegiant to the connection in + question and waiting to be reordered in the iSCSI layer. All "Y"s in + this column assume that the task causing the event (if indeed the + event is the result of a task) is issued as an immediate command, + because the discontiguities can be ahead of the task. + + + + + +Satran, et al. Standards Track [Page 252] + +RFC 3720 iSCSI April 2004 + + + 2. Discontiguous Data - data PDUs received for the task in question + and waiting to be reordered due to prior discontiguities in DataSN. + + 3. StatSN + + 4. CmdSN + + 5. DataSN + + 7. It clears the StatSN on all the connections. + + 8. This sequence number is instantiated on this event. + + 9. A logout failure drives the connection state machine to the + CLEANUP_WAIT state, similar to the connection failure event. Hence, + it has a similar effect on this and several other protocol aspects. + + 10. This is cleared by virtue of the fact that all sessions with all + initiators are terminated. + + 11. This clearing effect is "Y" if it is a connection reinstatement. + + 12. This clearing effect is "Y" only if it is a connection + reinstatement and the operational ErrorRecoveryLevel is 2. + + 13. This clearing effect is "N" only if it is a connection + reinstatement and the operational ErrorRecoveryLevel is 2. + +F.2. Clearing Effects on SCSI Objects + + The only iSCSI protocol action that can effect clearing actions on + SCSI objects is the "I_T nexus loss" notification (Section 4.3.5.1 + Loss of Nexus notification). [SPC3] describes the clearing effects + of this notification on a variety of SCSI attributes. In addition, + SCSI standards documents (such as [SAM2] and [SBC]) define additional + clearing actions that may take place for several SCSI objects on SCSI + events such as LU resets and power-on resets. + + Since iSCSI defines a target cold reset as a protocol-equivalent to a + target power-cycle, the iSCSI target cold reset must also be + considered as the power-on reset event in interpreting the actions + defined in the SCSI standards. + + When the iSCSI session is reconstructed (between the same SCSI ports + with the same nexus identifier) reestablishing the same I_T nexus, + all SCSI objects that are defined to not clear on the "I_T nexus + loss" notification event, such as persistent reservations, are + automatically associated to this new session. + + + +Satran, et al. Standards Track [Page 253] + +RFC 3720 iSCSI April 2004 + + +Acknowledgements + + This protocol was developed by a design team that, in addition to the + authors, included Daniel Smith, Ofer Biran, Jim Hafner and John + Hufferd (IBM), Mark Bakke (Cisco), Randy Haagens (HP), Matt Wakeley + (Agilent, now Sierra Logic), Luciano Dalle Ore (Quantum), and Paul + Von Stamwitz (Adaptec, now TrueSAN Networks). + + Furthermore, a large group of people contributed to this work through + their review, comments, and valuable insights. We are grateful to + all of them. We especially thank those people who found the time and + patience to take part in our weekly phone conferences and + intermediate meetings in Almaden and Haifa, which helped shape this + document: Prasenjit Sarkar, Meir Toledano, John Dowdy, Steve Legg, + Alain Azagury (IBM), Dave Nagle (CMU), David Black (EMC), John Matze + (Veritas - now Okapi Software), Steve DeGroote, Mark Schrandt + (Cisco), Gabi Hecht (Gadzoox), Robert Snively and Brian Forbes + (Brocade), Nelson Nachum (StorAge), and Uri Elzur (Broadcom). Many + others helped edit and improve this document within the IPS working + group. We are especially grateful to David Robinson and Raghavendra + Rao (Sun), Charles Monia, Joshua Tseng (Nishan), Somesh Gupta + (Silverback), Michael Krause, Pierre Labat, Santosh Rao, Matthew + Burbridge, Bob Barry, Robert Elliott, Nick Martin (HP), Stephen + Bailey (Sandburst), Steve Senum, Ayman Ghanem, Dave Peterson (Cisco), + Barry Reinhold (Trebia Networks), Bob Russell (UNH), Eddy Quicksall + (iVivity, Inc.), Bill Lynn and Michael Fischer (Adaptec), Vince + Cavanna, Pat Thaler (Agilent), Jonathan Stone (Stanford), Luben + Tuikov (Splentec), Paul Koning (EqualLogic), Michael Krueger + (Windriver), Martins Krikis (Intel), Doug Otis (Sanlight), John + Marberg (IBM), Robert Griswold and Bill Moody (Crossroads), Bill + Studenmund (Wasabi Systems), Elizabeth Rodriguez (Brocade) and Yaron + Klein (Sanrad). The recovery chapter was enhanced with the help of + Stephen Bailey (Sandburst), Somesh Gupta (Silverback), and Venkat + Rangan (Rhapsody Networks). Eddy Quicksall contributed some examples + and began the Definitions section. Michael Fischer and Bob Barry + started the Acronyms section. Last, but not least, we thank Ralph + Weber for keeping us in line with T10 (SCSI) standardization. + + We would like to thank Steve Hetzler for his unwavering support and + for coming up with such a good name for the protocol, and Micky + Rodeh, Jai Menon, Clod Barrera, and Andy Bechtolsheim for helping + make this work happen. + + In addition to this document, we recommend you acquaint yourself with + the following in order to get a full understanding of the iSCSI + specification: "iSCSI Naming & Discovery"[RFC3721], "Bootstrapping + Clients using the iSCSI Protocol" [BOOT], "Securing Block Storage + Protocols over IP" [RFC3723] documents, "iSCSI Requirements and + + + +Satran, et al. Standards Track [Page 254] + +RFC 3720 iSCSI April 2004 + + + Design Considerations" [RFC3347] and "SCSI Command Ordering + Considerations with iSCSI" [CORD]. + + The "iSCSI Naming & Discovery" document is authored by: + + Mark Bakke (Cisco), Jim Hafner, John Hufferd, Kaladhar Voruganti + (IBM), and Marjorie Krueger (HP). + + The "Bootstrapping Clients using the iSCSI Protocol" document is + authored by: + + Prasenjit Sarkar (IBM), Duncan Missimer (HP), and Costa + Sapuntzakis (Cisco). + + The "Securing Block Storage Protocols over IP" document is authored + by: + + Bernard Aboba (Microsoft), Joshua Tseng (Nishan), Jesse Walker + (Intel), Venkat Rangan (Rhapsody Networks), and Franco + Travostino (Nortel Networks). + + The "iSCSI Requirements and Design Considerations" document is + authored by: + + Marjorie Krueger, Randy Haagens (HP), Costa Sapuntzakis, and Mark + Bakke (Cisco). + + The "SCSI Command Ordering Considerations with iSCSI" document is + authored by: + + Mallikarjun Chadalapaka, Rob Elliot (HP) + + We are grateful to all of them for their good work and for helping us + correlate this document with the ones they produced. + + + + + + + + + + + + + + + + + +Satran, et al. Standards Track [Page 255] + +RFC 3720 iSCSI April 2004 + + +Authors' Addresses + + Julian Satran + IBM Research Laboratory in Haifa + Haifa University Campus - Mount Carmel + Haifa 31905, Israel + + Phone +972.4.829.6264 + EMail: Julian_Satran@il.ibm.com + + + Kalman Meth + IBM Research Laboratory in Haifa + Haifa University Campus - Mount Carmel + Haifa 31905, Israel + + Phone +972.4.829.6341 + EMail: meth@il.ibm.com + + + Costa Sapuntzakis + Stanford University + 353 Serra Mall Dr #407 + Stanford, CA 94305 + + Phone: +1.650.723.2458 + EMail: csapuntz@alum.mit.edu + + + Efri Zeidner + XIV Ltd. + 1 Azrieli Center, + Tel-Aviv 67021, Israel + + Phone: +972.3.607.4722 + EMail: efri@xiv.co.il + + + Mallikarjun Chadalapaka + Hewlett-Packard Company + 8000 Foothills Blvd. + Roseville, CA 95747-5668, USA + + Phone: +1.916.785.5621 + EMail: cbm@rose.hp.com + + + + + + +Satran, et al. Standards Track [Page 256] + +RFC 3720 iSCSI April 2004 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2004). This document is subject + to the rights, licenses and restrictions contained in BCP 78, and + except as set forth therein, the authors retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE + INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at ietf- + ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + +Satran, et al. Standards Track [Page 257] + diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SEI-2007.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SEI-2007.pdf new file mode 100644 index 0000000..4f80e50 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SEI-2007.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SPE-2004.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SPE-2004.pdf new file mode 100644 index 0000000..22b3aa4 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SPE-2004.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SUN-1999.ps b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SUN-1999.ps new file mode 100644 index 0000000..22fca8d --- /dev/null +++ b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/SUN-1999.ps @@ -0,0 +1,14251 @@ +%!PS-Adobe-1.0 +%%Creator: setsuko:vss (V.S.Sunderam,216 Fishburne,7275926,2974135) +%%Title: stdin (ditroff) +%%CreationDate: Sun Aug 5 09:43:41 1990 +%%EndComments +% Start of psdit.pro -- prolog for ditroff translator +% Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. +% GOVERNMENT END USERS: See Notice file in TranScript library directory +% -- probably /usr/lib/ps/Notice +% RCS: $Header: psdit.pro,v 2.2 87/11/17 16:40:42 byron Rel $ +/$DITroff 140 dict def $DITroff begin + +%% Psfig additions +/DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap +currentlinejoin currentdash currentgray currentmiterlimit ] cvx def + +/startFig { + /SavedState save def + userdict maxlength dict begin + currentpoint transform + + DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap + setlinewidth setmatrix + + itransform moveto + + /ury exch def + /urx exch def + /lly exch def + /llx exch def + /y exch 72 mul resolution div def + /x exch 72 mul resolution div def + + currentpoint /cy exch def /cx exch def + + /sx x urx llx sub div def % scaling for x + /sy y ury lly sub div def % scaling for y + + sx sy scale % scale by (sx,sy) + + cx sx div llx sub + cy sy div ury sub translate + + /DefFigCTM matrix currentmatrix def + + /initmatrix { + DefFigCTM setmatrix + } def + /defaultmatrix { + DefFigCTM exch copy + } def + + /initgraphics { + DocumentInitState setmiterlimit setgray setdash + setlinejoin setlinecap setlinewidth setmatrix + DefFigCTM setmatrix + } def + + /showpage { + initgraphics + } def + +} def +% Args are llx lly urx ury (in figure coordinates) +/clipFig { + currentpoint 6 2 roll + newpath 4 copy + 4 2 roll moveto + 6 -1 roll exch lineto + exch lineto + exch lineto + closepath clip + newpath + moveto +} def +% doclip, if called, will always be just after a `startfig' +/doclip { llx lly urx ury clipFig } def +/endFig { + end SavedState restore +} def +/globalstart { + % Push details about the enviornment on the stack. + fontnum fontsize fontslant fontheight firstpage + mh my resolution slotno currentpoint + pagesave restore gsave +} def +/globalend { + grestore moveto + /slotno exch def /resolution exch def /my exch def + /mh exch def /firstpage exch def /fontheight exch def + /fontslant exch def /fontsize exch def /fontnum exch def + F + /pagesave save def +} def + +%% end XMOD additions + +/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def +/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto + /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F + /pagesave save def}def +/PB{save /psv exch def currentpoint translate + resolution 72 div dup neg scale 0 0 moveto}def +/PE{psv restore}def +/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def +/tan{dup sin exch cos div}bind def +/point{resolution 72 div mul}bind def +/dround {transform round exch round exch itransform}bind def +/xT{/devname exch def}def +/xr{/mh exch def /my exch def /resolution exch def}def +/xp{}def +/xs{docsave restore end}def +/xt{}def +/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not + {fonts slotno fontname findfont put fontnames slotno fontname put}if}def +/xH{/fontheight exch def F}bind def +/xS{/fontslant exch def F}bind def +/s{/fontsize exch def /fontheight fontsize def F}bind def +/f{/fontnum exch def F}bind def +/F{fontheight 0 le {/fontheight fontsize def}if + fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore + fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if + makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def +/X{exch currentpoint exch pop moveto show}bind def +/N{3 1 roll moveto show}bind def +/Y{exch currentpoint pop exch moveto show}bind def +/S /show load def +/ditpush{}def/ditpop{}def +/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def +/AN{4 2 roll moveto 0 exch ashow}bind def +/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def +/AS{0 exch ashow}bind def +/MX{currentpoint exch pop moveto}bind def +/MY{currentpoint pop exch moveto}bind def +/MXY /moveto load def +/cb{pop}def % action on unknown char -- nothing for now +/n{}def/w{}def +/p{pop showpage pagesave restore /pagesave save def}def +/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def +/dstroke{currentpoint stroke moveto}bind def +/Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def +/arcellipse{oldmat currentmatrix pop + currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def + rad 0 rad -180 180 arc oldmat setmatrix}def +/Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke + grestore diamh 0 rmoveto}def +/De{gsave /diamv exch def /diamh exch def arcellipse dstroke + grestore diamh 0 rmoveto}def +/Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def + /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def + /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add + 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def +/Barray 200 array def % 200 values in a wiggle +/D~{mark}def +/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop + /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and + {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def + Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put + Bcontrol Blen 2 sub 2 copy get 2 mul put + Bcontrol Blen 1 sub 2 copy get 2 mul put + /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub + {/i exch def + Bcontrol i get 3 div Bcontrol i 1 add get 3 div + Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div + Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div + /Xbi Xcont Bcontrol i 2 add get 2 div add def + /Ybi Ycont Bcontrol i 3 add get 2 div add def + /Xcont Xcont Bcontrol i 2 add get add def + /Ycont Ycont Bcontrol i 3 add get add def + Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto + }for dstroke}if}def +end +/ditstart{$DITroff begin + /nfonts 60 def % NFONTS makedev/ditroff dependent! + /fonts[nfonts{0}repeat]def + /fontnames[nfonts{()}repeat]def +/docsave save def +}def + +% character outcalls +/oc {/pswid exch def /cc exch def /name exch def + /ditwid pswid fontsize mul resolution mul 72000 div def + /ditsiz fontsize resolution mul 72 div def + ocprocs name known{ocprocs name get exec}{name cb} + ifelse}def +/fractm [.65 0 0 .6 0 0] def +/fraction + {/fden exch def /fnum exch def gsave /cf currentfont def + cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto + fnum show rmoveto currentfont cf setfont(\244)show setfont fden show + grestore ditwid 0 rmoveto} def +/oce {grestore ditwid 0 rmoveto}def +/dm {ditsiz mul}def +/ocprocs 50 dict def ocprocs begin +(14){(1)(4)fraction}def +(12){(1)(2)fraction}def +(34){(3)(4)fraction}def +(13){(1)(3)fraction}def +(23){(2)(3)fraction}def +(18){(1)(8)fraction}def +(38){(3)(8)fraction}def +(58){(5)(8)fraction}def +(78){(7)(8)fraction}def +(sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def +(is){gsave 0 .15 dm rmoveto(\362)show oce}def +(->){gsave 0 .02 dm rmoveto(\256)show oce}def +(<-){gsave 0 .02 dm rmoveto(\254)show oce}def +(==){gsave 0 .05 dm rmoveto(\272)show oce}def +end +% DIThacks fonts for some special chars +50 dict dup begin +/FontType 3 def +/FontName /DIThacks def +/FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def +/FontBBox [-220 -280 900 900] def% a lie but ... +/Encoding 256 array def +0 1 255{Encoding exch /.notdef put}for +Encoding + dup 8#040/space put %space + dup 8#110/rc put %right ceil + dup 8#111/lt put %left top curl + dup 8#112/bv put %bold vert + dup 8#113/lk put %left mid curl + dup 8#114/lb put %left bot curl + dup 8#115/rt put %right top curl + dup 8#116/rk put %right mid curl + dup 8#117/rb put %right bot curl + dup 8#120/rf put %right floor + dup 8#121/lf put %left floor + dup 8#122/lc put %left ceil + dup 8#140/sq put %square + dup 8#141/bx put %box + dup 8#142/ci put %circle + dup 8#143/br put %box rule + dup 8#144/rn put %root extender + dup 8#145/vr put %vertical rule + dup 8#146/ob put %outline bullet + dup 8#147/bu put %bullet + dup 8#150/ru put %rule + dup 8#151/ul put %underline + pop +/DITfd 100 dict def +/BuildChar{0 begin + /cc exch def /fd exch def + /charname fd /Encoding get cc get def + /charwid fd /Metrics get charname get def + /charproc fd /CharProcs get charname get def + charwid 0 fd /FontBBox get aload pop setcachedevice + 40 setlinewidth + newpath 0 0 moveto gsave charproc grestore + end}def +/BuildChar load 0 DITfd put +%/UniqueID 5 def +/CharProcs 50 dict def +CharProcs begin +/space{}def +/.notdef{}def +/ru{500 0 rls}def +/rn{0 750 moveto 500 0 rls}def +/vr{20 800 moveto 0 -770 rls}def +/bv{20 800 moveto 0 -1000 rls}def +/br{20 770 moveto 0 -1040 rls}def +/ul{0 -250 moveto 500 0 rls}def +/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def +/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def +/sq{80 0 rmoveto currentpoint dround newpath moveto + 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def +/bx{80 0 rmoveto currentpoint dround newpath moveto + 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def +/ci{355 333 rmoveto currentpoint newpath 333 0 360 arc + 50 setlinewidth stroke}def + +/lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def +/lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def +/rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def +/rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def +/lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub + currentpoint stroke moveto + 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def +/rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub + currentpoint stroke moveto + 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def +/lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def +/rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def +/lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def +/rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def +end + +/Metrics 50 dict def Metrics begin +/.notdef 0 def +/space 500 def +/ru 500 def +/br 0 def +/lt 250 def +/lb 250 def +/rt 250 def +/rb 250 def +/lk 250 def +/rk 250 def +/rc 250 def +/lc 250 def +/rf 250 def +/lf 250 def +/bv 250 def +/ob 350 def +/bu 350 def +/ci 750 def +/bx 750 def +/sq 750 def +/rn 500 def +/ul 500 def +/vr 0 def +end + +DITfd begin +/s2 500 def /s4 250 def /s3 333 def +/a4p{arcto pop pop pop pop}def +/2cx{2 copy exch}def +/rls{rlineto stroke}def +/currx{currentpoint pop}def +/dround{transform round exch round exch itransform} def +end +end +/DIThacks exch definefont pop + +ditstart +(psc)xT +576 1 1 xr +1(Times-Roman)xf 1 f +2(Times-Italic)xf 2 f +3(Times-Bold)xf 3 f +4(Times-BoldItalic)xf 4 f +5(Helvetica)xf 5 f +6(Helvetica-Bold)xf 6 f +7(Courier)xf 7 f +8(Courier-Bold)xf 8 f +9(Symbol)xf 9 f +10(DIThacks)xf 10 f +10 s +1 f +xi +%%EndProlog + +%%Page: 1 1 +10 s 10 xH 0 xS 1 f +3 f +12 s +1108 984(PVM)N +1351(:)X +1407(A)X +1500(Framework)X +2010(for)X +2157(Parallel)X +2503(Distributed)X +2996(Computing)X +1 f +10 s +3459(*)X +2 f +2057 1296(V.)N +2146(S.)X +2226(Sunderam)X +1 f +1603 1440(Department)N +2002(of)X +2089(Math)X +2278(and)X +2414(Computer)X +2754(Science)X +1690 1536(Emory)N +1928(University,)X +2306(Atlanta,)X +2582(GA)X +2718(30322)X +2 f +2115 1920(ABSTRACT)N +1 f +11 s +1064 2128(The)N +3 f +9 s +1229(PVM)X +1 f +11 s +1425(system)X +1702(is)X +1793(a)X +1864(programming)X +2376(environment)X +2854(for)X +2988(the)X +3128(development)X +3617(and)X +864 2240(execution)N +1257(of)X +1380(large)X +1606(concurrent)X +2032(or)X +2155(parallel)X +2470(applications)X +2947(that)X +3130(consist)X +3425(of)X +3548(many)X +864 2352(interacting,)N +1291(but)X +1431(relatively)X +1792(independent,)X +2273(components.)X +2771(It)X +2853(is)X +2940(intended)X +3272(to)X +3369(operate)X +3656(on)X +864 2464(a)N +927(collection)X +1299(of)X +1395(heterogeneous)X +1926(computing)X +2327(elements)X +2664(interconnected)X +3206(by)X +3317(one)X +3467(or)X +3563(more)X +864 2576(networks.)N +1233(The)X +1396(participating)X +1869(processors)X +2265(may)X +2443(be)X +2552(scalar)X +2783(machines,)X +3164(multiprocessors,)X +864 2688(or)N +961(special-purpose)X +1537(computers,)X +1949(enabling)X +2276(application)X +2692(components)X +3141(to)X +3233(execute)X +3525(on)X +3636(the)X +864 2800(architecture)N +1311(most)X +1514(appropriate)X +1947(to)X +2048(the)X +2188(algorithm.)X +3 f +9 s +2600(PVM)X +1 f +11 s +2796(provides)X +3131(a)X +3202(straightforward)X +864 2912(and)N +1020(general)X +1308(interface)X +1645(that)X +1807(permits)X +2101(the)X +2238(description)X +2659(of)X +2761(various)X +3049(types)X +3264(of)X +3366(algorithms)X +864 3024(\(and)N +1044(their)X +1230(interactions\),)X +1718(while)X +1939(the)X +2072(underlying)X +2479(infrastructure)X +2978(permits)X +3268(the)X +3401(execution)X +864 3136(of)N +964(applications)X +1418(on)X +1533(a)X +1599(virtual)X +1857(computing)X +2262(environment)X +2734(that)X +2893(supports)X +3217(multiple)X +3539(paral-)X +864 3248(lel)N +991(computation)X +1471(models.)X +3 f +9 s +1800(PVM)X +1 f +11 s +2002(contains)X +2334(facilities)X +2677(for)X +2817(concurrent,)X +3253(sequential,)X +3671(or)X +864 3360(conditional)N +1285(execution)X +1651(of)X +1747(application)X +2163(components,)X +2633(is)X +2714(portable)X +3025(to)X +3116(a)X +3177(variety)X +3444(of)X +3539(archi-)X +864 3472(tectures,)N +1182(and)X +1331(supports)X +1651(certain)X +1913(forms)X +2140(of)X +2235(error)X +2427(detection)X +2773(and)X +2922(recovery.)X +3 f +576 4044(1.)N +686(Introduction)X +1 f +776 4296(In)N +882(recent)X +1130(years,)X +1371(parallel)X +1670(and)X +1831(distributed)X +2243(processing)X +2653(have)X +2853(been)X +3053(conjectured)X +3498(to)X +3601(be)X +3718(the)X +3860(most)X +576 4408(promising)N +963(solution)X +1277(to)X +1375(the)X +1512(computing)X +1919(requirements)X +2408(of)X +2510(the)X +2647(future.)X +2908(Signi\256cant)X +3320(advances)X +3670(in)X +3767(parallel)X +576 4520(algorithms)N +986(and)X +1145(architectures)X +1627(have)X +1825(demonstrated)X +2332(the)X +2472(potential)X +2814(for)X +2948(applying)X +3290(concurrent)X +3699(computa-)X +576 4632(tion)N +737(techniques)X +1137(to)X +1229(a)X +1290(wide)X +1483(variety)X +1750(of)X +1845(problems.)X +2217(However,)X +2582(most)X +2776(of)X +2871(the)X +3001(research)X +3315(efforts)X +3566(have)X +3754(concen-)X +576 4744(trated)N +799(either)X +1022(upon)X +2 f +1220(computational)X +1752(models)X +1 f +2023([1],)X +2169(parallel)X +2457(versions)X +2773(of)X +2 f +2869(algorithms)X +1 f +3251(,)X +3296(or)X +3392(machine)X +2 f +3714(architec-)X +576 4856(tures)N +1 f +(;)S +802(relatively)X +1161(little)X +1349(attention)X +1683(has)X +1824(been)X +2014(given)X +2234(to)X +2327(software)X +2653(development)X +3133(environments)X +3637(or)X +3734(program)X +576 4968(construction)N +1047(techniques)X +1459(that)X +1627(are)X +1770(required)X +2099(in)X +2204(order)X +2425(to)X +2530(translate)X +2865(algorithms)X +3279(into)X +3453(operational)X +3886(pro-)X +576 5080(grams.)N +842(This)X +1028(aspect)X +1277(is)X +1365(becoming)X +1742(more)X +1952(important)X +2325(as)X +2426(parallel)X +2719(processing)X +3123(progresses)X +3521(from)X +3720(the)X +3856(solu-)X +576 5192(tion)N +742(of)X +843(stand-alone,)X +1299 0.2788(mathematically)AX +1873(precise,)X +2172(problems)X +2529(to)X +2627(larger)X +2861(and)X +3017(more)X +3227(complex)X +3560(software)X +3891(sys-)X +576 5304(tems.)N +820(Such)X +1050(systems)X +1383(often)X +1618(consist)X +1917(of)X +2044(many)X +2294(interacting)X +2726(components,)X +3228(each)X +3443(with)X +3654(its)X +3792(unique)X +8 s +10 f +576 5384(hhhhhhhhhhhhhhhhhh)N +1 f +656 5478(*)N +720(Research)X +974(performed)X +1261(at)X +1329(the)X +1429(Mathematical)X +1802(Sciences)X +2047(Section)X +2261(of)X +2336(Oak)X +2464(Ridge)X +2639(National)X +2881(Laboratory)X +3186(under)X +3353(the)X +3453(auspices)X +3691(of)X +576 5558(the)N +691(Faculty)X +920(Research)X +1190(Participation)X +1554(Program)X +1811(of)X +1900(Oak)X +2042(Ridge)X +2231(Associated)X +2547(Universities,)X +2908(and)X +3036(supported)X +3324(by)X +3424(the)X +3538(Applied)X +576 5638(Mathematical)N +952(Sciences)X +1201(subprogram)X +1532(of)X +1611(the)X +1715(Of\256ce)X +1900(of)X +1979(Energy)X +2189(Research,)X +2464(U.S.)X +2604(Department)X +2931(of)X +3010(Energy,)X +3236(under)X +3407(contract)X +3638(DE-)X +576 5718(AC05-84OR21400)N +1079(with)X +1209(Martin)X +1399(Marietta)X +1631(Energy)X +1831(Systems,)X +2077(Inc.)X + +2 p +%%Page: 2 2 +8 s 8 xH 0 xS 1 f +11 s +2231 400(-)N +2282(2)X +2348(-)X +576 688(requirements.)N +1091(These)X +1334(requirements)X +1827(are)X +1967(often)X +2181(diverse)X +2469(enough)X +2762(that)X +2929(it)X +3013(is)X +3106(dif\256cult)X +3420(to)X +3523(program)X +3855(them)X +576 800(within)N +832(a)X +901(uni\256ed)X +1176(framework,)X +1613(and)X +1770(cumbersome,)X +2272(and)X +2429(sometime)X +2803(impractical,)X +3253(to)X +3352(execute)X +3650(the)X +3787(system)X +576 912(on)N +686(a)X +747(single)X +980(machine.)X +776 1164(An)N +910(example)X +1236(of)X +1336(such)X +1524(a)X +1590(system)X +1862(is)X +1948(the)X +2083(\257uid)X +2273(dynamics)X +2639(application)X +3060(termed)X +3333(BF3D,)X +3598(described)X +3963(in)X +576 1276([17].)N +777(This)X +967(application)X +1393(is)X +1485(not)X +1630(only)X +1819(compute)X +2155(intensive;)X +2531(it)X +2613(uses)X +2796(large)X +3004(amounts)X +3335(of)X +3440(memory,)X +3788(creates)X +576 1388(very)N +755(large)X +954(quantities)X +1322(of)X +1419(output)X +1669(data,)X +1862(and)X +2013(requires)X +2320(2D)X +2451(and)X +2602(3D)X +2733(graphics)X +3055(terminals)X +3408(to)X +3501(display)X +3780(results.)X +576 1500(The)N +744(algorithm)X +1119(essentially)X +1523(involves)X +1853(the)X +1992(solution)X +2308(of)X +2411(a)X +2480(set)X +2608(of)X +2711(partial)X +2967(differential)X +3389(equations)X +3757(in)X +3856(three)X +576 1612(dimensional)N +1036(space,)X +1281(by)X +1398(using)X +1618(an)X +1730(appropriately)X +2229(staggered)X +2595(grid.)X +2788(The)X +2954(algorithm)X +3327(may)X +3508(be)X +3620(parallelized)X +576 1724(in)N +679(different)X +1016(ways,)X +1252(enabling)X +1589(its)X +1706(execution)X +2082(on)X +2203(several)X +2485(categories)X +2875(of)X +2981(parallel)X +3279(machines.)X +3689(However,)X +576 1836(typical)N +840(multiprocessors)X +1421(rarely)X +1649(support)X +1936(high-bandwidth)X +2517(external)X +2825(I/O)X +2966(or)X +3063(high)X +3244(performance)X +3712(graphics,)X +576 1948(thereby)N +887(necessitating)X +1390(the)X +1545(separation)X +1954(of)X +2074(the)X +2229(computation,)X +2740(output)X +3012(management,)X +3531(and)X +3704(graphical)X +576 2060(display)N +866(components)X +1327(of)X +1435(the)X +1578(system.)X +1902(Another)X +2225(example)X +2560(of)X +2669(an)X +2788(application)X +3217(with)X +3410(differing)X +3754(require-)X +576 2172(ments)N +822(for)X +959(individual)X +1353(sub-algorithms)X +1917(is)X +2011(the)X +2154(Global)X +2428(Environment)X +2923(Simulation)X +3346(project)X +3625([2],)X +3783(a)X +3856(large)X +576 2284(simulation)N +979(effort)X +1203(to)X +1301(study)X +1521(contaminant)X +1988(concentrations)X +2532(and)X +2689(dispersal)X +3032(characteristics)X +3566(as)X +3669(a)X +3738(function)X +576 2396(of)N +685(various)X +980(environmental)X +1526(factors.)X +1823(The)X +1996(ideal)X +2204(computational)X +2746(requirements)X +3242(of)X +3351(this)X +3515(simulation)X +3925(are)X +576 2508(vector)N +833(processing)X +1246(\(for)X +1414(\257uid)X +1613(\257ow)X +1806(analysis\),)X +2178(distributed)X +2593(multiprocessing)X +3194(\(modeling)X +3595(contaminant)X +576 2620(transport\),)N +988(high-speed)X +1422(scalar)X +1675(computation)X +2165(\(simulation)X +2616(of)X +2737(temperature)X +3206(effects\),)X +3539(and)X +3713(real-time)X +576 2732(graphics)N +896(for)X +1020(user)X +1188(interaction.)X +776 2984(From)N +989(a)X +1050(different)X +1375(point)X +1579(of)X +1674(view,)X +1889(many)X +2107(applications)X +2556(that)X +2711(are)X +2840(amenable)X +3200(to)X +3291(concurrent)X +3689(execution)X +576 3096(can)N +722(be)X +829(programmed)X +1303(using)X +1518(either)X +1742(message)X +2063(passing)X +2350(or)X +2446(shared)X +2698(memory)X +3015(algorithms;)X +3441(when)X +3654(computing)X +576 3208(environments)N +1091(supporting)X +1503(both)X +1695(are)X +1837(available,)X +2213(a)X +2287(hybrid)X +2552(algorithm,)X +2953(at)X +3052(a)X +3126(suf\256ciently)X +3558(high)X +3751(level)X +3959(of)X +576 3320(granularity,)N +1011(may)X +1189(be)X +1298(used)X +1484(to)X +1578(advantage.)X +1982(A)X +2070(straightforward,)X +2659(but)X +2797(illustrative)X +3201(example)X +3525(is)X +3609(matrix)X +3865(mul-)X +576 3432 0.3250(tiplication)AN +958(using)X +1171(subblock)X +1511(decompositions)X +2087([18].)X +2277(In)X +2372(an)X +2478(environment)X +2947(consisting)X +3328(of)X +3424(different)X +3750(types)X +3959(of)X +576 3544(scalar)N +812(machines)X +1176(and)X +1334(multiprocessors,)X +1944(highly)X +2200(effective)X +2538(and)X +2695(ef\256cient)X +3014(algorithms)X +3422(for)X +3554(matrix)X +3815(multi-)X +576 3656(plication)N +915(can)X +1067(be)X +1180(implemented,)X +1694(with)X +1881(some)X +2097(subblocks)X +2479(being)X +2705 0.3681(multiplied)AX +3100(using)X +3321(static)X +3538(prescheduling)X +576 3768(on)N +712(shared)X +989(memory)X +1331(machines)X +1712(and)X +1886(others)X +2148(using)X +2386 0.1974("pipe-multiply-roll")AX +3139(strategies)X +3519(on)X +3654(distributed)X +576 3880(memory)N +892(computers.)X +1303(Empirical)X +1674(results)X +1926(obtained)X +2252(by)X +2362(using)X +2575(this)X +2725(approach)X +3069(are)X +3198(presented)X +3557(in)X +3648(Section)X +3935(5.)X +776 4132(It)N +857(should)X +1119(be)X +1229(noted)X +1452(that)X +1612(most)X +1811(typical)X +2079(computing)X +2484(environments)X +2992(already)X +3279(possess)X +3570(the)X +3706(hardware)X +576 4244(diversity)N +911(required)X +1230(to)X +1325(solve)X +1537(such)X +1724(large,)X +1948(parallel)X +2239(applications,)X +2714(and)X +2867(also)X +3035(contain)X +3320(support)X +3609(for)X +3736(multiple)X +576 4356(concurrent)N +989(computation)X +1468(models.)X +1783(High)X +1997(speed)X +2235(local)X +2445(networks)X +2805(with)X +3000(graphics)X +3336(workstations,)X +3846(high-)X +576 4468(performance)N +1046(scalar)X +1277(engines,)X +1594(an)X +1703(occasional)X +2101(multiprocessor,)X +2673(and)X +2826(perhaps)X +3125(a)X +3189(vector)X +3434(computer)X +3792(are)X +3924(the)X +576 4580(norm)N +786(rather)X +1015(than)X +1191(the)X +1323(exception,)X +1712(and)X +1863(will)X +2025(continue)X +2353(to)X +2446(be)X +2553(over)X +2733(the)X +2865(next)X +3041(few)X +3197(years.)X +3429(However,)X +3797(to)X +3891(har-)X +576 4692(ness)N +759(this)X +919(collection)X +1300(of)X +1405(capabilities)X +1840(and)X +1999(to)X +2100(utilize)X +2354(it)X +2436(productively)X +2913(requires)X +3227(considerable)X +3703(efforts)X +3963(in)X +576 4804(coordination)N +1047(and)X +1199(reconciliation)X +1710(between)X +2028(different)X +2356(computation)X +2823(models)X +3103(and)X +3255(architectures)X +3730(\320)X +3844(all)X +3959(of)X +576 4916(which)N +815(has)X +956(to)X +1049(be)X +1156(done)X +1351(manually.)X +1748(The)X +3 f +9 s +1905(PVM)X +1 f +11 s +2093(\(Parallel)X +2416(Virtual)X +2689(Machine\))X +3049(project)X +3317(is)X +3399(an)X +3505(attempt)X +3794(to)X +3886(pro-)X +576 5028(vide)N +756(a)X +823(uni\256ed)X +1096(framework)X +1510(within)X +1765(which)X +2009(large)X +2214(parallel)X +2508(systems)X +2816(can)X +2967(be)X +3079(developed)X +3470(in)X +3568(a)X +3636(straightfor-)X +576 5140(ward)N +774(and)X +924(ef\256cient)X +1236(manner.)X +1545(The)X +1705(overall)X +1973(objective)X +2319(of)X +2414(this)X +2564(project)X +2831(is)X +2912(to)X +3003(permit)X +3256(a)X +3317(collection)X +3688(of)X +3783(hetero-)X +576 5252(geneous)N +906(machines)X +1281(on)X +1411(a)X +1492(network)X +1822(to)X +1933(be)X +2058(viewed)X +2354(as)X +2469(a)X +2550(general)X +2851(purpose)X +3171(concurrent)X +3590(computation)X +576 5364(resource.)N +918(Application)X +1358(algorithms)X +1759(are)X +1889(expressed)X +2258(using)X +2472(the)X +2603(most)X +2798(suitable)X +3095(paradigm;)X +3475(the)X +3 f +9 s +3601(PVM)X +1 f +11 s +3787(system)X +576 5476(executes)N +913(them)X +1124(on)X +1246(the)X +1388(most)X +1594(appropriate)X +2029(hardware)X +2389(available,)X +2764(either)X +2999(directly)X +3304(or)X +3412(by)X +3535(emulating)X +3924(the)X +576 5588(particular)N +962(computation)X +1452(model.)X +1765(Furthermore,)X +2275(it)X +2372(is)X +2478(frequently)X +2887(desired)X +3188(to)X +3304(incorporate)X +3752(existing)X +576 5700(software)N +917(\(preferably)X +1346(with)X +1542(little)X +1745(or)X +1857(no)X +1984(modi\256cations\))X +2533(into)X +2710(a)X +2788(larger)X +3032(system;)X +3341(the)X +3 f +9 s +3484(PVM)X +1 f +11 s +3688(system)X +3973(is)X +576 5812(designed)N +911(to)X +1002(enable)X +1254(this)X +1404(in)X +1495(a)X +1556(convenient)X +1965(and)X +2114(natural)X +2381(manner.)X + +3 p +%%Page: 3 3 +11 s 11 xH 0 xS 1 f +2231 400(-)N +2282(3)X +2348(-)X +776 688(The)N +3 f +9 s +940(PVM)X +1 f +11 s +1135(system)X +1411(provides)X +1745(a)X +1815(set)X +1944(of)X +2048(user)X +2225(interface)X +2564(primitives)X +2954(that)X +3118(may)X +3302(be)X +3417(incorporated)X +3894(into)X +576 800(existing)N +880(procedural)X +1280(languages.)X +1677(Primitives)X +2064(exist)X +2254(for)X +2379(the)X +2510(invocation)X +2906(of)X +3002(processes,)X +3383(message)X +3704(transmis-)X +576 912(sion)N +766(and)X +936(reception,)X +1329(broadcasting,)X +1845(synchronization)X +2452(via)X +2604(barriers,)X +2938(mutual)X +3228(exclusion,)X +3632(and)X +3803(shared)X +576 1024(memory.)N +923(Processes)X +1295(may)X +1478(be)X +1592(initiated)X +1913(synchronously)X +2456(or)X +2559(asynchronously,)X +3163(and)X +3320(may)X +3502(be)X +3615(conditioned)X +576 1136(upon)N +789(the)X +934 0.3681(initiation)AX +1292(or)X +1402(termination)X +1847(of)X +1957(another)X +2258(process,)X +2581(or)X +2692(upon)X +2906(the)X +3052 0.2898(availability)AX +3489(of)X +3600(data)X +3785(values.)X +576 1248(Message)N +906(transmission)X +1375(as)X +1471(well)X +1646(as)X +1742(\256le)X +1878(output)X +2127(may)X +2302(be)X +2408(preceded)X +2748(by)X +2859(invocations)X +3288(of)X +3383(specially)X +3719(provided)X +576 1360(primitives)N +964(to)X +1062(ensure)X +1320(that)X +1482(data)X +1658(is)X +1746(transmitted)X +2173(or)X +2276(stored)X +2521(in)X +2620(a)X +2689(machine)X +3018(independent)X +3479(form.)X +3724(Applica-)X +576 1472(tion)N +737(systems)X +1039(may)X +1214(be)X +1320(programmed)X +1793(using)X +2007(these)X +2211(primitives)X +2593(in)X +2684(the)X +2814(language)X +3154(of)X +3249(choice;)X +3526(different)X +3851(com-)X +576 1584(ponents)N +881(may)X +1065(even)X +1263(be)X +1378(programmed)X +1860(in)X +1961(different)X +2296(languages.)X +2702(The)X +3 f +9 s +2867(PVM)X +1 f +11 s +3063(constructs)X +3452(therefore)X +3801(permit)X +576 1696(the)N +715(most)X +918(appropriate)X +1350(programming)X +1861(paradigm)X +2225(and)X +2383(language)X +2732(to)X +2832(be)X +2946(used)X +3138(for)X +3271(each)X +3462(individual)X +3851(com-)X +576 1808(ponent)N +842(of)X +941(a)X +1006(parallel)X +1297(system,)X +1591(while)X +1814(retaining)X +2155(the)X +2290(ability)X +2544(for)X +2673(components)X +3126(to)X +3222(interact)X +3514(and)X +3668(cooperate.)X +576 1920(It)N +657(should)X +919(be)X +1029(mentioned)X +1429(that)X +1588(the)X +3 f +9 s +1718(PVM)X +1 f +11 s +1908(user-interface)X +2417(primitives)X +2802(have)X +2994(been)X +3186(partly)X +3418(derived)X +3708(from)X +3905(and)X +576 2032(are)N +718(a)X +792(superset)X +1115(of)X +1223(the)X +1366(portable)X +1690(programming)X +2205(constructs)X +2597(described)X +2969(in)X +3073([3];)X +3235(an)X +3353(application)X +3782(written)X +576 2144(using)N +806(these)X +1026(primitives)X +1424(may)X +1615(therefore)X +1971(also)X +2152(execute)X +2460(directly)X +2769(on)X +2896(a)X +2973(speci\256c)X +3280(multiprocessor)X +3842(when)X +576 2256(necessary.)N +776 2508(The)N +3 f +9 s +936(PVM)X +1 f +11 s +1127(system)X +1399(consists)X +1705(of)X +1805(support)X +2096(software)X +2425(that)X +2585(executes)X +2915(on)X +3030(participating)X +3504(hosts)X +3712(on)X +3828(a)X +3895(net-)X +576 2620(work;)N +813(the)X +953(network)X +1273(may)X +1457(be)X +1572(local,)X +1798(wide-area)X +2176(or)X +2281(a)X +2352(combination,)X +2848(and)X +3007(the)X +3147(host)X +3326(pool)X +3515(may)X +3698(be)X +3812(varied)X +576 2732(dynamically.)N +1072(Hosts)X +1309(may)X +1498(be)X +1618(scalar)X +1860(machines,)X +2252(workstations,)X +2761(or)X +2871(parallel)X +3173(processors)X +3580(\320)X +3705(the)X +3850(latter)X +576 2844(being)N +811(considered)X +1231(an)X +1353(atomic)X +1633(computational)X +2178(resource)X +2514(by)X +3 f +9 s +2637(PVM)X +1 f +11 s +2801(.)X +2862(This)X +3057(support)X +3359(software)X +3699(interprets)X +576 2956(requests)N +888(generated)X +1254(by)X +1366(the)X +1498(user-level)X +1870(constructs)X +2252(and)X +2404(carries)X +2663(out)X +2801(the)X +2934(necessary)X +3300(actions)X +3575(in)X +3669(a)X +3733(machine)X +576 3068(independent)N +1031(manner.)X +1341(The)X +3 f +9 s +1498(PVM)X +1 f +11 s +1686(software)X +2012(essentially)X +2409(consists)X +2711(of)X +2807(a)X +2869(collection)X +3241(of)X +3337(protocol)X +3654(algorithms)X +576 3180(to)N +674(implement)X +1082(reliable)X +1376(and)X +1532(sequenced)X +1927(data)X +2103(transfer,)X +2423(distributed)X +2831(consensus,)X +3239(and)X +3396(mutual)X +3672(exclusion.)X +576 3292(In)N +681(an)X +796(attempt)X +1094(to)X +1195(make)X +1418(the)X +1558(system)X +1835(as)X +1939(robust)X +2190(as)X +2294(possible,)X +2636(these)X +2848(algorithms)X +3257(also)X +3430(incorporate)X +3862(error)X +576 3404(detection)N +932(mechanisms)X +1400(\320)X +1520(process)X +1815(and)X +1975(processor)X +2344(failure)X +2607(noti\256cation)X +3043(is)X +3135(provided)X +3481(to)X +3583(applications,)X +576 3516(thereby)N +865(enabling)X +1194(them)X +1396(to)X +1490(take)X +1662(corrective)X +2039(action.)X +2302(In)X +2400(addition,)X +2736(heuristics)X +3098(are)X +3229(included)X +3557(into)X +3719(the)X +3851(algo-)X +576 3628(rithms)N +838(for)X +976(mutual)X +1259(exclusion)X +1634(and)X +1798(consensus)X +2191(that)X +2361(enable)X +2628(the)X +2773(preemption)X +3212(of)X +3322(deadlock)X +3677(in)X +3783(several)X +576 3740(situations.)N +776 3992(Several)N +1065(projects)X +1369(similar)X +1640(to)X +3 f +9 s +1730(PVM)X +1 f +11 s +1919(have)X +2110(been)X +2301(undertaken)X +2717(in)X +2811(the)X +2944(past,)X +3134(and)X +3287(some)X +3499(are)X +3632(ongoing.)X +3969(A)X +576 4104(few)N +739(representative)X +1265(examples)X +1630(are)X +1769(listed)X +1993(below,)X +2262(with)X +2451(comparisons)X +2928(to)X +3 f +9 s +3024(PVM)X +1 f +11 s +3188(.)X +3241(The)X +3409(DPUP)X +3664(library)X +3930([4])X +576 4216(emulates)N +919(a)X +987(loosely)X +1272(coupled)X +1581(multiprocessor)X +2135(on)X +2253(a)X +2322(local)X +2524(network,)X +2864(as)X +2967(does)X +3158(the)X +3296(dsim)X +3498([5])X +3630(system)X +3905(and)X +576 4328(the)N +723(Cosmic)X +1032(environment)X +1516([6].)X +1678(The)X +1853(two)X +2023(latter)X +2243(systems)X +2560(require)X +2847(the)X +2993(precon\256guration)X +3613(of)X +3724(a)X +3801(virtual)X +576 4440(machine)N +897(on)X +1007(which)X +1244(applications)X +1693(execute)X +1985(and)X +2135(support)X +2422(only)X +2602(basic)X +2806(message)X +3127(passing)X +3414(mechanisms.)X +3895(The)X +576 4552(Amber)N +859(project)X +1143([15])X +1328(is)X +1426(somewhat)X +1822(different)X +2164(in)X +2272(that)X +2444(the)X +2591(targeted)X +2914(environment)X +3398(is)X +3495(a)X +3572(collection)X +3959(of)X +576 4664(homogeneous)N +2 f +1100(multi-)X +1 f +1311(processors.)X +1738(One)X +1919(of)X +2027(the)X +2170(operating)X +2538(modes)X +2803(within)X +3065(DPUP,)X +3347(as)X +3456(well)X +3644(as)X +3753(projects)X +576 4776(such)N +762(as)X +860(Marionette)X +1272([7])X +1399(and)X +1551(MSPCM)X +1889([8],)X +2038(uses)X +2214(the)X +2347(master-slave)X +2817(approach,)X +3186(where)X +3425(a)X +3489(central)X +3753(control-)X +576 4888(ling)N +739(process)X +1027(is)X +1111(responsible)X +1537(for,)X +1686(or)X +1784(is)X +1868(involved)X +2202(in,)X +2318(every)X +2538(system)X +2808(event.)X +3046(In)X +3144(addition)X +3459(to)X +3553(affecting)X +3891(per-)X +576 5000(formance)N +942(and)X +1103(being)X +1333(an)X +1449(unnatural)X +1815(model)X +2069(for)X +2204(certain)X +2477(classes)X +2754(of)X +2860(problems,)X +3243(this)X +3404(central)X +3677(process)X +3973(is)X +576 5112(critical,)N +877(and)X +1037(its)X +1154(failure)X +1417(leads)X +1631(to)X +1733(a)X +1805(complete)X +2162(collapse)X +2484(of)X +2591(the)X +2733(entire)X +2968(system.)X +3269(Another)X +3591(shortcoming)X +576 5224(common)N +912(to)X +1008(all)X +1124(the)X +1259(above)X +1496(is)X +1582(the)X +1717(use)X +1861(of)X +1961(virtual)X +2219(circuits)X +2506(for)X +2635(network)X +2950 0.2452(communication;)AX +3552(in)X +3647(addition)X +3963(to)X +576 5336(overheads)N +954(that)X +1109(may)X +1283(not)X +1418(be)X +1523(justi\256able,)X +1916(practical)X +2242(limits)X +2467(on)X +2577(the)X +2707(number)X +2998(of)X +3093(connections)X +3537(affect)X +3760(the)X +3891(sca-)X +576 5448(lability)N +862(of)X +969(applications.)X +1474(In)X +1581(addition,)X +1927(failure)X +2191(resiliency)X +2568(and)X +2728(debugging)X +3133(support)X +3430(is)X +3522(minimal.)X +3895(The)X +3 f +9 s +576 5560(PVM)N +1 f +11 s +771(system)X +1047(is)X +1137(completely)X +1561(distributed,)X +1992(supports)X +2321(a)X +2391(dynamic)X +2726(host)X +2904(pool,)X +3114(and)X +3272(assumes)X +3596(only)X +3784(that)X +3949(an)X +576 5672(unreliable,)N +979(unsequenced)X +1460(datagram)X +1815(delivery)X +2131(mechanism)X +2560(is)X +2646(available.)X +3014(From)X +3232(the)X +3367(application's)X +3850(point)X +576 5784(of)N +671(view,)X +3 f +9 s +882(PVM)X +1 f +11 s +1068(constructs)X +1447(are)X +1576(substantially)X +2045(more)X +2248(general)X +2529(in)X +2621(nature)X +2864(and)X +3014(encompass)X +3423(both)X +3603(the)X +3734(message)X + +4 p +%%Page: 4 4 +11 s 11 xH 0 xS 1 f +2231 400(-)N +2282(4)X +2348(-)X +576 688(passing)N +867(and)X +1020(shared)X +1275(memory)X +1595(paradigms;)X +2013(yet,)X +2169(by)X +2283(substituting)X +2722(alternative)X +3121(libraries,)X +3458(unmodi\256ed)X +3886(pro-)X +576 800(grams)N +813(may)X +987(execute)X +1278(on)X +1388(speci\256c)X +1679(multiprocessors.)X +776 1052(The)N +937(following)X +1304(section)X +1578(describes)X +1929(the)X +2061(user)X +2231(interface)X +2564(and)X +2716(the)X +2849(important)X +3218(design)X +3473(aspects)X +3752(of)X +3 f +9 s +3846(PVM)X +1 f +11 s +4010(.)X +576 1164(An)N +710(overview)X +1064(of)X +1164(the)X +3 f +9 s +1295(PVM)X +1 f +11 s +1486(support)X +1777(software,)X +2128(with)X +2312(an)X +2422(emphasis)X +2777(on)X +2892(the)X +3027(protocol)X +3348(algorithms)X +3752(and)X +3905(key)X +576 1276 0.2885(implementation)AN +1158(features)X +1462(follows.)X +1774(Preliminary)X +2217(results)X +2473(and)X +2626(performance)X +3096(\256gures)X +3361(are)X +3494(then)X +3673(presented,)X +576 1388(and)N +725(the)X +855(concluding)X +1269(section)X +1541(reports)X +1807(on)X +1917(continuing)X +2317(and)X +2466(future)X +2698(work.)X +3 f +576 1724(2.)N +686(The)X +855(User)X +1052(Interface)X +1 f +776 1976(The)N +957(application)X +1394(views)X +1644(the)X +3 f +9 s +1793(PVM)X +1 f +11 s +2002(system)X +2292(as)X +2410(a)X +2494(general)X +2798(and)X +2970(\257exible)X +3280(parallel)X +3590(computation)X +576 2088(resource)N +908(that)X +1076(supports)X +1409(common)X +1753(parallel)X +2053(programming)X +2568(paradigms.)X +2991(Application)X +3442(programs)X +3808(access)X +576 2200(these)N +784(resources)X +1142(by)X +1257(invoking)X +1598(function)X +1919(calls)X +2109(from)X +2308(within)X +2562(common)X +2899(procedural)X +3303(languages)X +3683(such)X +3872(as)X +3973(C)X +576 2312(or)N +676(Fortran.)X +984(Such)X +1187(an)X +1297(interface)X +1632(was)X +1795(selected)X +2106(primarily)X +2462(for)X +2590(portability)X +2985(reasons)X +3274(\320)X +3388(most)X +3586(multiproces-)X +576 2424(sor)N +712(applications)X +1168(are)X +1304(currently)X +1651(written)X +1930(in)X +2028(procedural)X +2433(languages)X +2814(with)X +3000(embedded,)X +3413(machine-speci\256c,)X +576 2536(function)N +905(calls)X +1102(that)X +1270(perform)X +1588(process)X +1886(spawning,)X +2280(message)X +2613(reception)X +2976(and)X +3138(transmission,)X +3641(and)X +3803(shared)X +576 2648(memory)N +893(operations.)X +1305(The)X +3 f +9 s +1461(PVM)X +1 f +11 s +1648(primitives)X +2030(have)X +2220(been)X +2410(made)X +2625(the)X +2757(same)X +2962(as)X +3059(or)X +3156(very)X +3336(similar)X +3606(to)X +3699(the)X +3831(union)X +576 2760(of)N +683(these)X +898(functions,)X +1282(thereby)X +1580(enabling)X +1918(previously)X +2324(written)X +2608(applications)X +3068(to)X +3170(be)X +3286(ported)X +3544(readily)X +3822(to)X +3924(the)X +3 f +9 s +576 2872(PVM)N +1 f +11 s +764(environment.)X +1256(This)X +1437(aspect)X +1682(also)X +1849(permits)X +2139(the)X +2272(execution)X +2640(of)X +2738(applications,)X +3212(or)X +3310(components)X +3761(thereof,)X +576 2984(on)N +691(speci\256c)X +987(machines)X +1347(when)X +1564(possible.)X +1924(The)X +3 f +9 s +2083(PVM)X +1 f +11 s +2273(user)X +2445(interface)X +2779(syntax)X +3035(and)X +3188(semantics)X +3562(are)X +3695(presented)X +576 3096(in)N +667(this)X +817(section)X +1089(with)X +1268(illustrative)X +1669(examples)X +2024(using)X +2237(the)X +2367(C)X +2448(language)X +2788(interface.)X +3 f +576 3432(2.1.)N +752(Processes)X +1130(and)X +1294(Process)X +1599(Initiation)X +1 f +776 3684(In)N +879(the)X +3 f +9 s +1013(PVM)X +1 f +11 s +1207(system,)X +1504(an)X +1617(application)X +2040(is)X +2129(considered)X +2540(to)X +2639(consist)X +2914(of)X +2 f +3017(components)X +1 f +3437(.)X +3489(For)X +3641(example,)X +3993(a)X +576 3796(simulation)N +979(application)X +1401(might)X +1637(consist)X +1911(of)X +2013(a)X +2081(partial)X +2336(differential)X +2756(equation)X +3088(component,)X +3530(a)X +3597(matrix)X +3856(solu-)X +576 3908(tion)N +738(component,)X +1176(and)X +1327(a)X +1390(user)X +1560(interface)X +1892(component.)X +2352(It)X +2430(should)X +2689(be)X +2796(pointed)X +3085(out)X +3222(that)X +3379(this)X +3531(de\256nition)X +3895(of)X +3993(a)X +576 4020(component)N +993(is)X +1077(perhaps)X +1375(unconventional;)X +1969(usually,)X +2271(the)X +2404(term)X +2591(implies)X +2877(a)X +2941(phase)X +3166(or)X +3264(portion)X +3544(of)X +3641(an)X +3748(applica-)X +576 4132(tion)N +741(that)X +901(is)X +988(embodied)X +1364(in)X +1461(a)X +1528(subroutine)X +9 f +1928(-)X +1 f +2004(such)X +2193(as)X +2294("the)X +2466(forward-substitution)X +3213(component)X +3633(of)X +3734(a)X +3801(matrix)X +576 4244(solver".)N +873(However,)X +1240(the)X +3 f +9 s +1368(PVM)X +1 f +11 s +1556(system)X +1825(is)X +1908(a)X +1971(large-granularity)X +2587(environment,)X +3079(primarily)X +3432(targeted)X +3739(at)X +3826(appli-)X +576 4356(cations)N +849(that)X +1005(are)X +1135(collections)X +1542(of)X +1639(relatively)X +1997(independent)X +2452(programs.)X +2830(In)X +2927(view)X +3122(of)X +3219(this,)X +3393(a)X +3 f +9 s +3452(PVM)X +1 f +11 s +3640(component)X +576 4468(corresponds)N +1031(not)X +1175(to)X +1275(a)X +1345(phase)X +1576(in)X +1676(the)X +1815(traditional)X +2210(sense,)X +2452(but)X +2595(rather)X +2830(to)X +2929(a)X +2998(larger)X +3233(unit)X +3401(of)X +3504(an)X +3617(application.)X +576 4580(From)N +790(the)X +921(system)X +1189(point)X +1394(of)X +1490(view,)X +1706(a)X +1768(component)X +2183(corresponds)X +2630(to)X +2722(an)X +2829(object)X +3069(\256le)X +3206(that)X +3363(is)X +3446(capable)X +3739(of)X +3836(being)X +576 4692(executed)N +925(as)X +1034(a)X +1109(user-level)X +1492(process.)X +1813(A)X +1911(compiled)X +2275(C)X +2369(program)X +2702(that)X +2870(performs)X +3222(LU)X +3374(factorization)X +3855(is)X +3949(an)X +576 4804(example)N +897(of)X +992(a)X +1054(component.)X +1491(It)X +1568(is)X +1650(the)X +1781(responsibility)X +2285(of)X +2381(the)X +2512(user)X +2681(to)X +2773(compile)X +3081(component)X +3496(programs)X +3851(to)X +3943(all)X +576 4916(target)N +806(architectures)X +1285(on)X +1402(which)X +1646(that)X +1808(component)X +2229(may)X +2409(execute.)X +2728(Depending)X +3142(upon)X +3346(the)X +3482(target)X +3711(machine,)X +576 5028(the)N +719(compiled)X +1083(version)X +1377(of)X +1485(a)X +1559(component)X +1986(may)X +2173(either)X +2409(link)X +2582(against)X +2867(the)X +3 f +9 s +3007(PVM)X +1 f +11 s +3207(primitives,)X +3624(or)X +3733(machine)X +576 5140(speci\256c)N +877(libraries,)X +1220(or)X +1325(both.)X +1536(A)X +1631(component)X +2055(is)X +2146(therefore)X +2494(a)X +2564(static)X +2782(entity)X +3015(and)X +3173(is)X +3263(identi\256ed)X +3628(by)X +3747(a)X +2 f +3817(name)X +1 f +4007(;)X +576 5252(associations)N +1024(between)X +1339(component)X +1753(names)X +2000(and)X +2149(executable)X +2548(versions)X +2864(are)X +2994(set)X +3115(up)X +3226(as)X +3322(discussed)X +3682(in)X +3774(the)X +3905(fol-)X +576 5364(lowing)N +843(paragraphs.)X +776 5616(A)N +888(complete)X +1261(description)X +1703(of)X +1826(application)X +2269(components,)X +2767(i.e.)X +2925(the)X +3083(component)X +3525(name)X +3766(and)X +3943(all)X +576 5728(corresponding)N +1126(executables)X +1584(\(each)X +1820(with)X +2023(an)X +2152(architecture)X +2614(tag\),)X +2819(is)X +2924(obtained)X +3274(by)X +3408(the)X +3 f +9 s +3558(PVM)X +1 f +11 s +3768(support)X +576 5840(software.)N +935(This)X +1127(information)X +1579(is)X +1673(gathered)X +2011(either)X +2247(from)X +2454(a)X +2529(\256le)X +2678(or)X +2787(from)X +2994(a)X +3069(startup)X +3345(process,)X +3666(as)X +3775(will)X +3949(be)X + +5 p +%%Page: 5 5 +11 s 11 xH 0 xS 1 f +2231 400(-)N +2282(5)X +2348(-)X +576 688(explained)N +950(below.)X +1218(An)X +1356(example)X +1686(of)X +1790(a)X +1860(component)X +2283(description)X +2705(\256le)X +2848(is)X +2937(shown)X +3196(in)X +3295(Figure)X +3555(1.)X +3673(This)X +3860(table)X +576 800(illustrates)N +944(that)X +1101(a)X +1164(component,)X +1602(identi\256ed)X +1961(by)X +2074(a)X +2138(name,)X +2376(may)X +2553(be)X +2661(manifested)X +3073(as)X +3171(several)X +3445(different)X +3773(execut-)X +576 912(able)N +755(\256les;)X +959(and)X +1118(conversely,)X +1553(that)X +1718(multiple)X +2046(component)X +2470(names)X +2727(may)X +2911(map)X +3094(onto)X +3282(the)X +3421(same)X +3633(executable.)X +576 1024(The)N +746(\256rst)X +916(feature)X +1193(permits)X +1491(the)X +3 f +9 s +1628(PVM)X +1 f +11 s +1825(system)X +2104(to)X +2207(execute)X +2510(components)X +2970(at)X +3068(the)X +3210(most)X +3416(suitable)X +3725(location,)X +576 1136(while)N +794(the)X +924(second)X +1190(allows)X +1442(the)X +1572(user)X +1740(to)X +1831(specify)X +2107(a)X +2168(particular)X +2528(location)X +2835(as)X +2930(will)X +3090(be)X +3195(explained)X +3560(below.)X +10 f +1190 1328(i)N +1218(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1234 1440(Name)N +1615(Location)X +2061(Object)X +2318(\256le)X +2934(Architecture)X +10 f +1190 1456(i)N +1218(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1190 1472(i)N +1218(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1234 1576(factor)N +1615(iPSC)X +2061(/u0/host/factor1)X +2934(ipsc)X +1234 1688(factor)N +1615(msrsun)X +2061 0.1612(/usr/alg/math/factor)AX +2934(sun3)X +1234 1800(factor)N +1615(msrsun)X +2061 0.1531(/usr/alg4/math/factor)AX +2934(sun4)X +1234 1912(chol)N +1615(csvax2)X +2061(/usr/matrix/chol)X +2934(vax)X +1234 2024(chol)N +1615(vmsvax)X +2061(JOE:CHOL.OBJ)X +2934(vms)X +1234 2136(tool)N +1615(msrsun)X +2061(/usr/view/graph/obj)X +2934(sun3)X +1234 2248(factor2)N +1615(iPSC)X +2061(/u0/host/factor1)X +2934(ipsc)X +10 f +1190 2272(i)N +1218(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1190(c)X +2208(c)Y +2120(c)Y +2032(c)Y +1944(c)Y +1856(c)Y +1768(c)Y +1680(c)Y +1592(c)Y +1504(c)Y +1416(c)Y +3418 2272(c)N +2208(c)Y +2120(c)Y +2032(c)Y +1944(c)Y +1856(c)Y +1768(c)Y +1680(c)Y +1592(c)Y +1504(c)Y +1416(c)Y +1 f +1451 2544(Figure)N +1703(1)X +1769(:)X +1816(Example)X +2152(Component)X +2586(Description)X +3019(File)X +776 2908(A)N +2 f +862(process)X +1 f +1153(is)X +1235(an)X +1341(executing)X +1707(instance)X +2019(of)X +2115(a)X +2177(component)X +2592(and)X +2742(is)X +2824(identi\256ed)X +3181(by)X +3293(the)X +3425(component)X +3841(name)X +576 3020(and)N +736(a)X +808(positive)X +1121(instance)X +1443(number.)X +1767(Processes)X +2141(may)X +2326(be)X +2442(initiated)X +2766(from)X +2969(within)X +3227(components)X +3685(or)X +3790(from)X +3993(a)X +576 3132("startup")N +914(process)X +1203(that)X +1362(may)X +1540(be)X +1649(manually)X +2004(executed)X +2343(on)X +2457(any)X +2610(participating)X +3083(host.)X +3278(A)X +3367(process)X +3656(is)X +3741(initiated)X +576 3244(by)N +688(invoking)X +1026(the)X +3 f +1158(initiate)X +1 f +1447(primitive)X +1796(with)X +1977(the)X +2108(component)X +2523(name)X +2737(as)X +2833(an)X +2939(argument;)X +3320(the)X +3451(instance)X +3763(number)X +576 3356(of)N +676(the)X +811(initiated)X +1129(process)X +1419(is)X +1505(returned)X +1825(to)X +1921(the)X +2057(user.)X +2253(Prior)X +2457(to)X +2554(executing)X +2925(any)X +3 f +9 s +3076(PVM)X +1 f +11 s +3268(construct,)X +3641(however,)X +3993(a)X +576 3468(process)N +871(must)X +1075(invoke)X +1347(the)X +3 f +1486(enroll)X +1 f +1738(function;)X +2088(this)X +2247(establishes)X +2660(a)X +2730(\(machine)X +3089(dependent\))X +3511(mechanism)X +3944(by)X +576 3580(which)N +815(a)X +878(user)X +1048(process)X +1335(may)X +1511(communicate)X +2011(with)X +2192(the)X +3 f +9 s +2320(PVM)X +1 f +11 s +2509(system.)X +2801(A)X +2889(typical)X +3155(section)X +3430(of)X +3528(code)X +3719(executed)X +576 3692(by)N +690(a)X +754(startup)X +1019(process)X +1307(is)X +1391(shown)X +1645(in)X +1739(Figure)X +1994(2.)X +2107(It)X +2186(should)X +2446(be)X +2554(noted)X +2775(in)X +2869(the)X +3002(example)X +3326(shown)X +3580(that)X +3738(the)X +3871(phy-)X +576 3804(sical)N +770(location)X +1087(of)X +1192(the)X +1333(initiated)X +1657(processes)X +2026(is)X +2118(transparent)X +2542(to)X +2644(the)X +2785(invoking)X +3132(process;)X +3453(the)X +3 f +9 s +3590(PVM)X +1 f +11 s +3787(system)X +576 3916(determines)N +989(the)X +1123(best)X +1291(machine)X +1616(on)X +1730(which)X +1971(to)X +2066(execute)X +2361(a)X +2426(process)X +2715(based)X +2940(upon)X +3141(the)X +3274(current)X +3548(host)X +3720(pool,)X +3924(the)X +576 4028(alternative)N +994(architectures)X +1489(on)X +1622(which)X +1882(a)X +1966(component)X +2403(may)X +2600(execute,)X +2936(and)X +3109(the)X +3263(load)X +3461(factor)X +3712(on)X +3846(those)X +576 4140(machines.)N +955(However,)X +1322(a)X +1385(speci\256c)X +1678(location)X +1987(may)X +2163(be)X +2269(forced)X +2516(by)X +2627(declaring)X +2978(a)X +3040(new)X +3209(component)X +3624(name)X +3838(\(as)X +3963(in)X +576 4252(the)N +706(last)X +851(line)X +1006(of)X +1101(the)X +1231(component)X +1645(description)X +2059(\256le)X +2194(above\))X +2455(and)X +2604 0.3681(initiating)AX +2947(that)X +3102(component.)X +8 f +735 4524(...)N +735 4636 0.1985(enroll\("startup"\);)AN +735 4748(for)N +947(\(i=0;i<10;i++\))X +894 4860(instance[i])N +1530(=)X +1636 0.1979(initiate\("factor"\);)AX +735 4972(...)N +1 f +1373 5132(Figure)N +1625(2)X +1691(:)X +1738(Initiation)X +2085(of)X +2180(multiple)X +2498(component)X +2912(instances)X +2 f +776 5496(Positioning)N +1 f +1212(of)X +1313(application)X +1734(components)X +2188(on)X +2304(speci\256c)X +2601(processing)X +3005(elements)X +3348(is)X +3436(often)X +3646(a)X +3714(desirable)X +576 5608(facility,)N +881(particularly)X +1320(in)X +1420(heterogeneous)X +1959(environments.)X +2492(When)X +2733(the)X +2872(application)X +3296(has)X +3444(prior)X +3646(knowledge)X +576 5720(of)N +674(the)X +807(special)X +1077(capabilities)X +1505(of)X +1603(a)X +1667(speci\256c)X +1961(machine)X +2285(or)X +2383(even)X +2574(the)X +2707(characteristics)X +3237(of)X +3336(a)X +3401(particular)X +3765(dataset,)X +576 5832(executing)N +951(a)X +1022(component)X +1445(at)X +1540(a)X +1610(\256xed)X +1817(location)X +2133(can)X +2286(lead)X +2464(to)X +2564(signi\256cant)X +2963(bene\256ts.)X +3290(In)X +3 f +9 s +3390(PVM)X +1 f +11 s +3554(,)X +3607(this)X +3766(may)X +3949(be)X + +6 p +%%Page: 6 6 +11 s 11 xH 0 xS 1 f +2231 400(-)N +2282(6)X +2348(-)X +576 688(accomplished)N +1090(either)X +1320(statically)X +1669(as)X +1771(explained)X +2143(above,)X +2404(or)X +2506(dynamically)X +2972(by)X +3089(using)X +3309(the)X +3 f +3446(entercomp)X +1 f +3876(con-)X +576 800(struct.)N +824(Arguments)X +1245(to)X +1344(this)X +1502(construct)X +1855(are)X +1992(a)X +2060(component)X +2481(name,)X +2723(an)X +2835(object)X +3080(\256lename)X +3413(and)X +3569(location,)X +3905(and)X +576 912(an)N +686(architecture)X +1129(tag.)X +1308(This)X +1492(construct)X +1842(is)X +1928(used)X +2116(to)X +2212("register")X +2575(a)X +2641(new)X +2814(component)X +3233(that)X +3393(may)X +3572(subsequently)X +576 1024(be)N +695(executed)X +1044(by)X +1168(using)X +1394(the)X +3 f +1537(initiate)X +1 f +1837(construct.)X +2217(For)X +2374(example,)X +2730(if)X +2819(an)X +2937(executing)X +3315(component)X +3742(found)X +3982(it)X +576 1136(necessary)N +952(to)X +1056(spawn)X +1315(a)X +1389(subprocess)X +1809(on)X +1932(a)X +2006(speci\256c)X +2311(machine,)X +2668(it)X +2754(might)X +2997(use)X +3150(the)X +3294(following)X +3673(section)X +3959(of)X +576 1248(code:)N +8 f +735 1520 0.1912(entercomp\("subproc","sequent8","/usr/a.out","seq"\);)AN +735 1632 0.1974(initiate\("subproc"\);)AN +1 f +776 1932(The)N +3 f +946(initiate)X +1 f +1244(mechanism)X +1679(is,)X +1793(by)X +1914(default,)X +2214(asynchronous.)X +2752(Control)X +3055(is)X +3147(returned)X +3473(to)X +3576(the)X +3718(invoking)X +576 2044(process)N +871(as)X +975(soon)X +1172(as)X +1276(the)X +1415(instance)X +1735(number)X +2035(of)X +2139(the)X +2278(process)X +2572(is)X +2662(available.)X +3034(However,)X +3408(under)X +3639(certain)X +3910(cir-)X +576 2156(cumstances,)N +1044(it)X +1134(may)X +1326(be)X +1450(necessary)X +1832(to)X +1942(initiate)X +2230(a)X +2310(component)X +2743(only)X +2941(after)X +3143(another)X +3448(process)X +3752(has)X +3910(ter-)X +576 2268(minated.)N +938(The)X +3 f +1108(initiateP)X +1 f +1460(variant)X +1738(allows)X +2001(this)X +2162(by)X +2283(permitting)X +2685(the)X +2826(user)X +3005(to)X +3107(defer)X +3320 0.3681(initiation)AX +3674(of)X +3780(a)X +3851(com-)X +576 2380(ponent)N +838(until)X +1023(after)X +1206(another)X +1492(has)X +1631(terminated.)X +2053(For)X +2197(example,)X +8 f +735 2540 0.1937(initiateP\("factor","matmul",3\);)AN +1 f +576 2784(will)N +742(initiate)X +1017(an)X +1129(instance)X +1447(of)X +1549("factor")X +1855(only)X +2041(after)X +2231(instance)X +2549(number)X +2847(3)X +2920(of)X +3022("matmul")X +3394(has)X +3540(terminated.)X +3969(A)X +576 2896(third-argument)N +1131(value)X +1348(of)X +1447(0)X +1517(will)X +1681(cause)X +1902("factor")X +2205(to)X +2300(be)X +2409(initiated)X +2726(only)X +2909(when)X +2 f +3124(all)X +1 f +3243(instances)X +3591(of)X +3689("matmul")X +576 3008(terminate.)N +956(In)X +1053(an)X +1160(analogous)X +1541(fashion,)X +3 f +1846(initiateD)X +1 f +2198(is)X +2281(used)X +2466(to)X +2559(execute)X +2852(components)X +3302(conditional)X +3724(upon)X +3924(the)X +576 3120(occurrence)N +983(of)X +1078(a)X +1139(user-signaled)X +1630(event,)X +1865(normally)X +2206(the)X +2336 0.2898(availability)AX +2757(of)X +2852(data.)X +3043(Thus,)X +8 f +735 3280 0.1942(initiateD\("chol","dataset7"\);)AN +1 f +576 3524(will)N +761(delay)X +999(the)X +1154(execution)X +1544(of)X +1664("chol")X +1936(until)X +2147(some)X +2381(other)X +2610(process)X +2921(signals)X +3214(the)X +3370(occurrence)X +3803(of)X +3924(the)X +576 3636("dataset7")N +972(event,)X +1220(by)X +1343(invoking)X +1692(the)X +3 f +1834(ready)X +1 f +2049(\("dataset7"\))X +2502(primitive.)X +2883(All)X +3030(variants)X +3343(of)X +3 f +3450(initiate)X +1 f +3749(return)X +3993(a)X +576 3748(negative)N +897(result)X +1115(if)X +1191(a)X +1252(process)X +1537(could)X +1755(not)X +1890(be)X +1996(initiated,)X +2332(thereby)X +2619(enabling)X +2946(the)X +3077(invoker)X +3369(to)X +3461(take)X +3631(appropriate)X +576 3860(action.)N +862(The)X +1025(global)X +1272(component)X +1690(dependencies)X +2190(of)X +2289(the)X +2423(application)X +2841(may)X +3018(therefore)X +3360(be)X +3468(speci\256ed)X +3806(within)X +576 3972(a)N +640(startup)X +905(process)X +1193(by)X +1306(the)X +1440(use)X +1583(of)X +1682(appropriate)X +3 f +2109(initiate)X +1 f +2400(primitives)X +2785(or)X +2884(variants,)X +3211(embedded)X +3599(within)X +3851(com-)X +576 4084(mon)N +765(selection)X +1110(and)X +1268(iteration)X +1594(control)X +1875(\257ow)X +2062(constructs)X +2450(available)X +2800(in)X +2900(the)X +3039(host)X +3217(language.)X +3588(Of)X +3711(course,)X +3993(a)X +576 4196(component)N +991(itself)X +1191(may)X +1366(be)X +1472(composed)X +1852(of)X +1948(several)X +2220(subcomponents)X +2791(\320)X +2902(whose)X +3149(dependencies)X +3647(and)X +3798(execu-)X +576 4308(tion)N +748(order)X +967(are)X +1108(indicated)X +1466(in)X +1569(an)X +1686(analogous)X +2076(manner)X +2373(within)X +2632(that)X +2798(component.)X +3267(Two)X +3461(other)X +3675(constructs)X +576 4420(termed)N +3 f +862(terminate)X +1 f +1269(and)X +3 f +1438(waitprocess)X +1 f +1919(are)X +2068(also)X +2252(provided.)X +2629(Both)X +2843(take)X +3032(a)X +3113(component)X +3547(name)X +3780(and)X +3949(an)X +576 4532(instance)N +894(number)X +1192(\(or)X +1323(0)X +1395(to)X +1492(mean)X +1711(all)X +1828(instances\))X +2208(as)X +2309(arguments;)X +2729(the)X +2865(\256rst)X +3030(aborts)X +3273(the)X +3409(process)X +3700(while)X +3924(the)X +576 4644(second)N +842(blocks)X +1094(the)X +1224(caller)X +1442(until)X +1627(the)X +1757(process)X +2042(completes.)X +3 f +576 4980(2.2.)N +752(Data)X +954(Transfer)X +1308(and)X +1472(Barrier)X +1778(Synchronization)X +1 f +776 5232(Inter-process)N +1258(communication)X +1832(via)X +1964(message)X +2286(passing)X +2574(is)X +2657(one)X +2808(of)X +2905(the)X +3037(basic)X +3242(facilities)X +3572(supported)X +3944(by)X +3 f +9 s +576 5344(PVM)N +1 f +11 s +740(.)X +792(In)X +895(the)X +1033(interest)X +1323(of)X +1426(portability)X +1825(and)X +1982(wide)X +2183 0.2452(applicability,)AX +2678(the)X +2816(primitives)X +3205(to)X +3303(accomplish)X +3734(message)X +576 5456(transfer)N +872(have)X +1066(been)X +1260(derived)X +1552(from)X +1751(existing)X +2059 0.2500(implementations)AX +2677(\(e.g)X +2839([9]\),)X +3020(including)X +3382(those)X +3597(described)X +3963(in)X +576 5568([3].)N +725(Certain)X +1010(aspects,)X +1311(however,)X +1660(are)X +1792(necessarily)X +2208(different;)X +2561(primary)X +2865(among)X +3130(them)X +3331(is)X +3414(addressing.)X +3836(Since)X +576 5680(the)N +712(physical)X +1035(location)X +1349(of)X +1451(processes)X +1816(is)X +1904(deliberately)X +2350(transparent)X +2770(to)X +2868(user)X +3043(programs,)X +3426(message)X +3753(destina-)X +576 5792(tions)N +783(are)X +925(identi\256ed)X +1294(by)X +1417(a)X +1491({component)X +1960(name,)X +2208(instance)X +2532(number})X +2878(pair.)X +3071(Furthermore,)X +3567(owing)X +3821(to)X +3924(the)X + +7 p +%%Page: 7 7 +11 s 11 xH 0 xS 1 f +2231 400(-)N +2282(7)X +2348(-)X +576 688(heterogeneous)N +1108(nature)X +1352(of)X +1449(the)X +1582(underlying)X +1989(hardware)X +2340(that)X +3 f +9 s +2494(PVM)X +1 f +11 s +2683(executes)X +3011(upon,)X +3234(it)X +3309(is)X +3393(necessary)X +3759(for)X +3886(user)X +576 800(programs)N +935(to)X +1031(send)X +1219(and)X +1373(receive)X +1654(typed)X +1877(data)X +2051(in)X +2147(a)X +2213(machine)X +2538(independent)X +2995(form.)X +3214(To)X +3338(enable)X +3594(this,)X +3770(a)X +3835(set)X +3959(of)X +576 912(conversion)N +989(routines)X +1300(has)X +1444(been)X +1637(provided)X +1977(\320)X +2092(user)X +2265(programs)X +2624(invoke)X +2892(these)X +3101(routines)X +3413(to)X +3510(construct)X +3861(mes-)X +576 1024(sage)N +754(buffers)X +1024(and)X +1173(to)X +1264(retrieve)X +1555(data)X +1724(values)X +1971(from)X +2164(incoming)X +2520(messages.)X +776 1276(In)N +871(keeping)X +1172(with)X +1351(popular)X +1642(message)X +1962(passing)X +2249(mechanisms,)X +2730(the)X +3 f +9 s +2857(PVM)X +11 s +3044(send)X +1 f +3238(and)X +3 f +3388(receive)X +1 f +3675(constructs)X +576 1388(incorporate)N +1003(a)X +1068("type")X +1318(argument.)X +1699(This)X +1882(is)X +1967(the)X +2101(only)X +2284(argument)X +2642(to)X +3 f +2736(receive)X +1 f +3000(,)X +3047(while)X +3 f +3268(send)X +1 f +3464(requires)X +3772(a)X +3836(desti-)X +576 1500(nation)N +827(component)X +1249(name)X +1470(and)X +1628(instance)X +1948(number)X +2248(as)X +2352(additional)X +2737(arguments.)X +3157(The)X +3325(type)X +3508(parameter)X +3891(per-)X +576 1612(mits)N +759(the)X +897(selective)X +1236(reception)X +1594(of)X +1697(messages)X +2059(and)X +2216(has)X +2363(been)X +2559(found)X +2794(to)X +2892(be)X +3004(extremely)X +3386(useful)X +3630(in)X +3728(practical)X +576 1724(applications.)N +1053(It)X +1135(should)X +1398(be)X +1509(noted)X +1733(that)X +1894(neither)X +2167(the)X +2303(data)X +2478(buffer)X +2720(itself)X +2925(nor)X +3071(its)X +3184(length)X +3434(appear)X +3697(explicitly)X +576 1836(as)N +684(arguments)X +1086(\320)X +1209(owing)X +1464(to)X +1568(data)X +1749(representation)X +2282(and)X +2443(size)X +2614(differences)X +3038(on)X +3160(different)X +3497(machines,)X +3886(user)X +576 1948(programs)N +940(should)X +1207(only)X +1396(access)X +1652(messages)X +2016(using)X +2239(the)X +2380(conversion)X +2799(routines.)X +3138(Shown)X +3415(in)X +3517(Figure)X +3780(3)X +3857(is)X +3949(an)X +576 2060(example)N +897(of)X +992(data)X +1161(transfer)X +1451(between)X +1766(two)X +1920(component)X +2334(processes.)X +8 f +735 2220(/*)N +894(Sending)X +1318(Process)X +1742(*/)X +735 2332 0.1969(/*-----------------*/)AN +735 2444(initsend\(\);)N +2537(/*)X +2696(Initialize)X +3279(send)X +3544(buffer)X +3915(*/)X +735 2556(putstring\("The)N +1530(square)X +1901(root)X +2166(of)X +2325("\);)X +2537(/*)X +2696(Store)X +3014(values)X +3385(in)X +3915(*/)X +735 2668(putint\(2\);)N +2537(/*)X +2696(machine)X +3120(independent)X +3915(*/)X +735 2780(putstring\("is)N +1477("\);)X +2537(/*)X +2696(form)X +3915(*/)X +735 2892(putfloat\(1.414\);)N +735 3004 0.1964(send\("receiver",4,99\);)AN +2537(/*)X +2696(Instance)X +3173(4;)X +3332(type)X +3597(99)X +3915(*/)X +735 3228(/*)N +894(Receiving)X +1424(Process)X +1848(*/)X +735 3340 0.1960(/*-------------------*/)AN +735 3452(char)N +1000 0.1992(msg1[32],msg2[4];)AX +735 3564(int)N +947(num;)X +1212(float)X +1530(sqnum;)X +735 3676(recv\(99\);)N +2537(/*)X +2696(Receive)X +3120(msg)X +3332(of)X +3491(type)X +3756(99)X +3915(*/)X +735 3788(getstring\(msg1\);)N +2537(/*)X +2696(Extract)X +3120(values)X +3491(in)X +3915(*/)X +735 3900(getint\(&num\);)N +2537(/*)X +2696(a)X +2802(machine)X +3226(specific)X +3915(*/)X +735 4012(getstring\(msg2\);)N +2537(/*)X +2696(manner)X +3915(*/)X +735 4124 0.1992(getfloat\(&sqnum\);)AN +1 f +1667 4396(Figure)N +1919(3)X +1985(:)X +2032(User)X +2219(process)X +2504(data)X +2673(transfer)X +776 4760(In)N +883(order)X +1102(for)X +1238(a)X +1311(receiving)X +1673(process)X +1970(to)X +2073(obtain)X +2328(additional)X +2716(information)X +3167(about)X +3398(the)X +3541(most)X +3748(recently)X +576 4872(received)N +901(message,)X +1248(the)X +3 f +1383(recvinfo)X +1 f +1718(construct)X +2068(is)X +2154(provided;)X +2519(this)X +2674(returns)X +2944(the)X +3078(name)X +3295(and)X +3448(instance)X +3763(number)X +576 4984(of)N +672(the)X +803(sending)X +1100(process)X +1386(and)X +1536(the)X +1667(message)X +1988(length.)X +2276(In)X +2372(addition,)X +2707(two)X +2862(variants)X +3164(of)X +3261(the)X +3 f +3393(recv)X +1 f +3578(construct)X +3925(are)X +576 5096(provided.)N +936(The)X +1097(\256rst,)X +3 f +1280(recv1)X +1 f +1485(,)X +1531(permits)X +1820(the)X +1952(user)X +2122(to)X +2215(specify)X +2493(the)X +2625(maximum)X +3008(number)X +3301(of)X +3398(messages)X +3754(of)X +3851(other)X +576 5208(types)N +790(that)X +951(may)X +1131(arrive)X +1364(in)X +1461(the)X +1597(interim)X +1882(\(i.e.)X +2048(while)X +2273(waiting)X +2567(for)X +2698(a)X +2766(message)X +3093(of)X +3195(the)X +3332(speci\256ed)X +3674(type\).)X +3906(If)X +3993(a)X +576 5320(message)N +902(of)X +1003(the)X +1138(anticipated)X +1553(type)X +1732(does)X +1920(not)X +2060(arrive)X +2292(within)X +2545(this)X +2700(window,)X +3032(an)X +3142(error)X +3339(value)X +3557(is)X +3643(returned)X +3963(to)X +576 5432(the)N +731(program,)X +1098(thus)X +1292(enabling)X +1643(the)X +1798(detection)X +2169(of)X +2289(and)X +2463(possible)X +2799(recovery)X +3154(from)X +3373(incorrect)X +3734(program)X +576 5544(behavior)N +948(or)X +1085(unacceptable)X +1609(levels)X +1878(of)X +2014(asynchrony.)X +2504(The)X +2704(second)X +3011(variant,)X +3 f +3341(recv2)X +1 f +3546(,)X +3631(allows)X +3924(the)X +576 5656(speci\256cation)N +1045(of)X +1141(a)X +1203(timeout)X +1497(value)X +1711(and)X +1861(is)X +1943(valuable)X +2265(in)X +2357(preventing)X +2757(certain)X +3020(forms)X +3248(of)X +3344(deadlock)X +3686(as)X +3783(well)X +3959(as)X +576 5768(in)N +670(user-level)X +1042(detection)X +1391(of)X +1489(failed)X +1715(components.)X +2188(Also)X +2379(provided)X +2717(is)X +2801(the)X +3 f +2934(broadcast)X +1 f +3330(primitive)X +3680(that)X +3837(sends)X + +8 p +%%Page: 8 8 +11 s 11 xH 0 xS 1 f +2231 400(-)N +2282(8)X +2348(-)X +576 688(a)N +637(message)X +957(to)X +1048(all)X +1159(instances)X +1504(of)X +1599(a)X +1660(speci\256ed)X +1995(component.)X +776 940(Synchronization)N +1377(via)X +1508(barriers)X +1799(is)X +1881(a)X +1944(common)X +2277(operation)X +2634(in)X +2727(many)X +2947(applications.)X +3442(Under)X +3 f +9 s +3681(PVM)X +1 f +11 s +3845(,)X +3891(bar-)X +576 1052(rier)N +725(synchronization)X +1315(is)X +1401(accomplished)X +1913(using)X +2131(the)X +3 f +2266(barrier)X +1 f +2567(construct.)X +2939(This)X +3122(construct)X +3471(takes)X +3678(an)X +3787(integer)X +576 1164(argument;)N +975(an)X +1099(instance)X +1429(of)X +1543(a)X +1623(component)X +2056(invoking)X +2411(this)X +2581(construct)X +2946(will)X +3126(block)X +3364(until)X +3569(the)X +3719(speci\256ed)X +576 1276(number)N +870(of)X +968(instances)X +1316(of)X +1414(the)X +1547(component)X +1963(also)X +2129(arrive)X +2358(at)X +2446(the)X +2578(barrier.)X +2858(For)X +3004(example,)X +3349(to)X +3442(measure)X +3759(the)X +3891(per-)X +576 1388(formance)N +938(of)X +1041(algorithm)X +1415(sections,)X +1751(participating)X +2228(components)X +2684(may)X +2866(execute)X +3165(the)X +3304(following)X +3678(section)X +3959(of)X +576 1500(code:)N +8 f +841 1772(.)N +947(.)X +1053(.)X +841 1884(barrier\(k\);)N +1795(/*)X +1954(There)X +2272(are)X +2484(k)X +2590(instances)X +3120(executing)X +3650(*/)X +841 1996(/*)N +1000(Get)X +1212(start)X +1530(time)X +1795(*/)X +841 2108(/*)N +1000(Perform)X +1424(computations)X +2113(*/)X +841 2220(/*)N +1000(Get)X +1212(end)X +1424(time)X +1689(*/)X +841 2332(barrier\(k\);)N +841 2444(/*)N +1000(Compute)X +1424(global)X +1795(maximum)X +2219(of)X +2378(\(end)X +2643(time)X +2908(-)X +3014(start)X +3332(time\))X +3650(*/)X +1 f +576 2632(When)N +808(the)X +938(barrier)X +1194(construct)X +1539(has)X +1678(the)X +1809(above)X +2042(semantics)X +2413(however,)X +2760(it)X +2833(is)X +2915(possible)X +3227(that)X +3383(different)X +3709(instances)X +576 2744(invoke)N +845(the)X +3 f +982(barrier)X +1 f +1285(construct)X +1636(with)X +1821(different)X +2152(arguments.)X +2569(Any)X +2748(such)X +2937(con\257icts)X +3264(are)X +3399(resolved)X +3725(by)X +3841(using)X +576 2856(the)N +708(maximum)X +1091(speci\256ed)X +1428(number)X +1721(as)X +1818(the)X +1950(barrier)X +2208(count.)X +2472(The)X +3 f +9 s +2629(PVM)X +1 f +11 s +2817(system)X +3086(also)X +3252(attempts)X +3576(to)X +3669(detect)X +3905(and)X +576 2968(correct)N +849(barrier)X +1112(deadlocks)X +1493(by)X +1610(notifying)X +1963(invoking)X +2306(processes)X +2671(if)X +2754(some)X +2969(instances)X +3321(of)X +3423(a)X +3490(component)X +3910(ter-)X +576 3080(minate)N +850(before)X +1107(they)X +1292(reach)X +1515(a)X +1587(barrier,)X +1876(and)X +2036(the)X +2177(residual)X +2489(number)X +2791(of)X +2897(instances)X +3253(cannot)X +3521(form)X +3725(a)X +3798(barrier)X +576 3192(quorum.)N +897(In)X +995(such)X +1181(situations,)X +1567(live)X +1725(processes)X +2086(return)X +2321(from)X +2517(a)X +3 f +2581(barrier)X +1 f +2880(call)X +3032(with)X +3213(a)X +3276(negative)X +3599(result)X +3819(value.)X +576 3304(In)N +673(addition)X +987(to)X +1080(barriers,)X +1394(or)X +1491(as)X +1588(an)X +1695(alternative,)X +2114(the)X +3 f +2247(waituntil)X +1 f +2610(construct)X +2958(is)X +3042(also)X +3209(provided)X +3547(as)X +3645(a)X +3709(means)X +3959(of)X +576 3416(synchronization.)N +1201(This)X +1398(construct)X +1760(\(suggested)X +2175(in)X +2283([10]\))X +2497(takes)X +2717(an)X +2839(event)X +3069(name)X +3299(as)X +3411(an)X +3533(argument)X +3905(and)X +576 3528(blocks)N +834(until)X +1026(another)X +1319(process)X +1611(indicates)X +1954(the)X +2091(occurrence)X +2505(of)X +2607(that)X +2769(event)X +2989(by)X +3106(using)X +3326(the)X +3 f +3463(ready)X +1 f +3707(primitive)X +576 3640(mentioned)N +971(earlier.)X +3 f +576 3976(2.3.)N +752(Shared)X +1043(Memory)X +1387(and)X +1551(Mutual)X +1852(Exclusion)X +1 f +776 4228(The)N +945(use)X +1094(of)X +1199(shared)X +1461(memory)X +1788(to)X +1890(synchronize)X +2348(and)X +2508(communicate)X +3017(between)X +3343(processes)X +3712(is)X +3804(a)X +3876(con-)X +576 4340(venient)N +865(and)X +1020(well)X +1200(understood)X +1619(paradigm,)X +2002(and)X +2157(the)X +3 f +9 s +2289(PVM)X +1 f +11 s +2481(system)X +2754(provides)X +3085(such)X +3274(an)X +3385(interface)X +3721(for)X +3851(algo-)X +576 4452(rithms)N +831(that)X +993(are)X +1129(best)X +1300(expressed)X +1675(in)X +1773(these)X +1983(terms.)X +2230(This)X +2416(facility,)X +2718(however,)X +3071(should)X +3335(be)X +3448(used)X +3639(judiciously)X +576 4564(\320)N +693(since)X +903(shared)X +1161(memory)X +1484(is)X +1572(emulated)X +1925(by)X +3 f +9 s +2038(PVM)X +1 f +11 s +2231(on)X +2347(distributed)X +2753(memory)X +3075(architectures,)X +3575(some)X +3789(perfor-)X +576 4676(mance)N +832(degradation)X +1274(is)X +1359(inevitable)X +1735(when)X +1952(the)X +2087(granularity)X +2501(of)X +2601(access)X +2852(is)X +2938(very)X +3121(\256ne.)X +3302(Nevertheless,)X +3805(such)X +3993(a)X +576 4788(feature)N +854(is)X +947(useful)X +1196(and)X +1357(valuable.)X +1712(For)X +1868(example,)X +2223(when)X +2447(using)X +2672(the)X +2814("bag)X +3011(of)X +3117(tasks")X +3362(and)X +3522("worker)X +3839(pool")X +576 4900(approach,)N +945(the)X +1078(shared)X +1332(memory)X +1651(model)X +1897(permits)X +2188(greater)X +2458(control,)X +2756(increased)X +3114(overall)X +3385(throughput,)X +3820(and)X +3973(is)X +576 5012(affected)N +885(less)X +1042(by)X +1155(load)X +1332(imbalances,)X +1776(provided)X +2114(the)X +2247(tasks)X +2448(are)X +2580(of)X +2678(suf\256ciently)X +3100(large)X +3301(size.)X +3485(Since)X +3 f +9 s +3702(PVM)X +1 f +11 s +3891(per-)X +576 5124(mits)N +755(each)X +942(worker)X +1216(in)X +1311(the)X +1445(pool)X +1628(to)X +1723(run)X +1866(on)X +1981(different)X +2311(architectures,)X +2810(the)X +2945(individual)X +3331(worker)X +3606(components)X +576 5236(\(or)N +710(groups)X +981(thereof\))X +1291(may)X +1475(be)X +1590(written)X +1872(to)X +2 f +1973(internally)X +1 f +2348(use)X +2496(either)X +2728(message)X +3057(passing)X +3352(or)X +3456(shared)X +3716(memory.)X +576 5348(Section)N +873(5)X +949(describes)X +1308(an)X +1423(experiment)X +1852(where)X +2098(this)X +2258(facility)X +2541(was)X +2709(successfully)X +3172(used)X +3366(to)X +3468(enable)X +3731(a)X +3803(shared)X +576 5460(memory)N +892(multiprocessor)X +1438(to)X +1529(cooperate)X +1893(with)X +2072(a)X +2133(hypercube)X +2521(in)X +2612(the)X +2742(solution)X +3049(of)X +3144(an)X +3249(application)X +3664(problem.)X +776 5712(The)N +951(shared)X +1218(memory)X +1550(primitives)X +1947(provided)X +2298(are)X +2444(modeled)X +2787(once)X +2992(again)X +3222(after)X +3422(popular,)X +3752(existing)X +576 5824 0.2333(implementations.)AN +1238(A)X +1329(shared)X +1585(memory)X +1906(segment)X +2227(is)X +2313(\256rst)X +2477(allocated)X +2823(by)X +2938(invoking)X +3279(the)X +3 f +3414(shmget)X +1 f +3709(construct)X + +9 p +%%Page: 9 9 +11 s 11 xH 0 xS 1 f +2231 400(-)N +2282(9)X +2348(-)X +576 688(that)N +731(takes)X +934(a)X +995(string)X +1218(valued)X +1476(identi\256er)X +1818(and)X +1968(a)X +2030(segment)X +2347(size)X +2507(in)X +2599(bytes.)X +2852(To)X +2973(acquire)X +3255(a)X +3317(shared)X +3569(memory)X +3886(seg-)X +576 800(ment)N +783(for)X +915(use,)X +1084(a)X +1153(user)X +1329(process)X +1622(invokes)X +1926(the)X +3 f +2064(shmat)X +1 f +2323(construct,)X +2698(specifying)X +3094(the)X +3231(segment)X +3554(identi\256er,)X +3924(the)X +576 912(address)N +869(within)X +1125(the)X +1263(process)X +1556(at)X +1650(which)X +1895(the)X +2033(segment)X +2357(is)X +2446(to)X +2546(be)X +2660(mapped,)X +2992(a)X +3062(\257ag)X +3225(indicating)X +3610(whether)X +3924(the)X +576 1024(segment)N +899(is)X +987(to)X +1085(be)X +1197(mapped)X +1505(read-only)X +1871(or)X +1973(read-write,)X +2385(and)X +2541(a)X +2609(timeout)X +2909(value.)X +3150(This)X +3335(construct)X +3686 0.4306(implicitly)AX +576 1136(incorporates)N +1033(a)X +1094(lock)X +1268(operation;)X +1648(if)X +1724(mutually)X +2061(exclusive)X +2416(access)X +2662(to)X +2754(the)X +2885(segment)X +3202(cannot)X +3460(be)X +3566(provided,)X +3924(the)X +576 1248(invoking)N +912(process)X +1197(is)X +1278(suspended)X +1666(\320)X +1776(for)X +1900(a)X +1961(period)X +2208(not)X +2343(to)X +2434(exceed)X +2700(the)X +2830(speci\256ed)X +3165(timeout)X +3458(value.)X +776 1500(The)N +950(attach)X +1198(operation)X +1568(described)X +1942(above)X +2189(maps)X +2412(a)X +2488(contiguous,)X +2934(untyped)X +3255(block)X +3488(of)X +3598(bytes)X +3822(at)X +3924(the)X +576 1612(speci\256ed)N +914(address.)X +1224(In)X +1322(most)X +1519(situations)X +1883(however,)X +2232(shared)X +2486(memory)X +2805(segments)X +3158(will)X +3321(be)X +3429(used)X +3615(to)X +3709(store)X +3905(and)X +576 1724(manipulate)N +998(typed)X +1223(data.)X +1421(In)X +1523(order)X +1737(to)X +1835(permit)X +2095(this)X +2252(among)X +2522(dissimilar)X +2901(machines,)X +3286(typed)X +3512(variants)X +3821(of)X +3924(the)X +576 1836(attach)N +813(construct)X +1162(are)X +1295(provided.)X +1656(For)X +1804(example,)X +2151(the)X +3 f +2285(shmatint)X +1 f +2643(construct)X +2991(takes)X +3197(an)X +3305(integer)X +3575(pointer)X +3850(as)X +3948(its)X +576 1948(second)N +843(argument,)X +1221(while)X +1440(the)X +3 f +1572(shmat\257oat)X +1 f +1991(variant)X +2260(is)X +2343(used)X +2528(for)X +2654(shared)X +2907(memory)X +3225(regions)X +3508(that)X +3665(hold)X +3846(\257oat-)X +576 2060(ing)N +725(point)X +943(values.)X +1248(\(It)X +1367(should)X +1637(be)X +1755(noted)X +1986(that)X +2154(typed)X +2385(data)X +2567(transfer)X +2870(between)X +3198(dissimilar)X +3582(architectures)X +576 2172(could)N +807(lead)X +989(to)X +1093(loss)X +1266(of)X +1375(precision)X +1734(or)X +1843(to)X +1948(truncation)X +2342(owing)X +2598(to)X +2703(wordsize)X +3056(differences.)X +3526(Both)X +3734(message)X +576 2284(passing)N +865(and)X +1017(shared)X +1271(memory)X +1590(mechanisms)X +2051(are)X +2183(subject)X +2458(to)X +2552(this)X +2705(drawback.)X +3115(The)X +3 f +9 s +3273(PVM)X +1 f +11 s +3462(system)X +3732(attempts)X +576 2396(to)N +671(minimize)X +1032(this)X +1186(by)X +1300(utilizing)X +1623(the)X +1758(largest)X +2020(size)X +2184(possible)X +2500(for)X +2629(typed)X +2852(data)X +3026(values.\))X +3351(When)X +3588(a)X +3654(process)X +3944(no)X +576 2508(longer)N +836(needs)X +1071(exclusive)X +1439(access)X +1698(to)X +1802(a)X +1876(region,)X +2158(it)X +2243(invokes)X +2552(the)X +3 f +2694(shmdt)X +1 f +2962(construct)X +3319(\(or)X +3455(a)X +3528(typed)X +3758(variant\))X +576 2620(whereupon)N +993(the)X +1128(lock)X +1307(is)X +1393(released)X +1708(and)X +1862(the)X +1997(region)X +2249(unmapped.)X +2666(Finally,)X +2967(the)X +3 f +3103(shmfree)X +1 f +3433(construct)X +3784(is)X +3871(used)X +576 2732(to)N +670(deallocate)X +1053(a)X +1117(segment)X +1436(of)X +1534(shared)X +1788(memory)X +2107(when)X +2322(it)X +2397(is)X +2481(no)X +2594(longer)X +2844(required.)X +3183(Shown)X +3451(in)X +3544(Figure)X +3798(4)X +3866(is)X +3949(an)X +576 2844(example)N +897(of)X +992(the)X +1122(use)X +1261(of)X +1356(these)X +1559(constructs)X +1938(to)X +2029(pass)X +2202(an)X +2307(array)X +2509(of)X +2604(real)X +2758(numbers)X +3083(between)X +3398(two)X +3552(processes.)X +8 f +735 3116(/*)N +894(Process)X +1318(A)X +1424(*/)X +735 3228(/*-----------*/)N +735 3340(if)N +894 0.1964(\(shmget\("matrx",1024\)\))AX +2113(error\(\);/*)X +2696(Allocation)X +3279(failure)X +3862(*/)X +735 3452(while)N +2537(/*)X +2696(Try)X +2908(to)X +3067(lock)X +3332(&)X +3438(map)X +3650(seg)X +3862(*/)X +894 3564 0.1935(\(shmatfloat\("matrx",fp,"RW",5\)\);)AN +735 3676(for)N +947(\(i=0;i<256;i++\))X +1795(*fp++)X +2113(=)X +2219(a[i];)X +2537(/*)X +2696(Fill)X +2961(in)X +3120(shmem)X +3438(segment)X +3862(*/)X +735 3788 0.1974(shmdtfloat\("matrx"\);)AN +2537(/*)X +2696(Unlock)X +3067(&)X +3173(unmap)X +3491(region)X +3862(*/)X +735 4012(/*)N +894(Process)X +1318(B)X +1424(*/)X +735 4124(/*-----------*/)N +735 4236(while)N +2537(/*)X +2696(Lock)X +2961(&)X +3067(map;)X +3332(note:reader*/)X +894 4348 0.1934(\(shmatfloat\("matrx",fp,"R",5\)\);/*)AN +2696(may)X +2908(lock)X +3173(before)X +3544(writer)X +3915(*/)X +735 4460(for)N +947(\(i=0;i<256;i++\))X +1795(a[i])X +2060(=)X +2166(*fp++;)X +2537(/*)X +2696(Read)X +2961(out)X +3173(values)X +3915(*/)X +735 4572 0.1974(shmdtfloat\("matrx"\);)AN +2537(/*)X +2696(Unlock)X +3067(&)X +3173(unmap)X +3491(region)X +3915(*/)X +735 4684 0.1992(shmfree\("matrx"\);)AN +2537(/*)X +2696(Deallocate)X +3279(mem)X +3491(segment)X +3915(*/)X +1 f +1581 4844(Figure)N +1833(4)X +1899(:)X +1946(Use)X +2104(of)X +2199(shared)X +2450(memory)X +2766(for)X +2890(IPC)X +776 5096(While)N +1014(shared)X +1265(memory)X +1581(is)X +1662(perhaps)X +1957(the)X +2087(most)X +2281(common)X +2612(resource)X +2931(that)X +3086(processes)X +3445(require)X +3717(mutually)X +576 5208(exclusive)N +957(access)X +1229(to,)X +1368(it)X +1466(is)X +1573(possible)X +1910(that)X +2091(the)X +3 f +9 s +2243(PVM)X +1 f +11 s +2455(environment)X +2949(contains)X +3291(other)X +3520(resources)X +3899(that)X +576 5320(processes)N +946(must)X +1152(access)X +1410(in)X +1513(a)X +1586(similar)X +1866(manner.)X +2186(To)X +2318(accommodate)X +2842(such)X +3037(requirements,)X +3553(a)X +3626(generalized)X +576 5432(locking)N +864(facility)X +1138(is)X +1220(also)X +1385(provided.)X +1743(The)X +3 f +1903(lock)X +1 f +2082(construct)X +2427(permits)X +2714(the)X +2844(logical)X +3107(locking)X +3394(of)X +3489(an)X +3594(entity)X +3818(that)X +3973(is)X +576 5544(named)N +840(by)X +957(a)X +1025(string)X +1255(argument;)X +1642(the)X +3 f +9 s +1776(PVM)X +1 f +11 s +1970(system)X +2245(blocks)X +2505(other)X +2716(processes)X +3082(wishing)X +3391(to)X +3490(lock)X +3672(this)X +3830(entity)X +576 5656(until)N +769(the)X +907(possessor)X +1273(invokes)X +1577(the)X +3 f +1715(unlock)X +1 f +2000(construct.)X +2397(For)X +2549(example,)X +2899(different)X +3231(components)X +3686(of)X +3788(a)X +3856(large)X +576 5768(application)N +996(may)X +1175(wish)X +1368(to)X +1464(output)X +1717(results)X +1974(periodically)X +2424(to)X +2521(a)X +2588(user)X +2762(terminal.)X +3107(To)X +3233(avoid)X +3457(interference)X +3905(and)X + +10 p +%%Page: 10 10 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(10)X +2370(-)X +576 688(to)N +670(distinguish)X +1083(the)X +1216(source)X +1470(of)X +1568(the)X +1701(output,)X +1974(components)X +2425(may)X +2602(adopt)X +2823(a)X +2887(convention)X +3303(that)X +3460(requires)X +3767(locking)X +576 800(")N +7 f +612(terminal)X +1 f +1036(")X +1100(before)X +1352(printing)X +1660(messages)X +2021(or)X +2123(results.)X +2404(Another)X +2721(situation)X +3055(where)X +3298(such)X +3488(a)X +3556(facility)X +3836(could)X +576 912(be)N +685(useful)X +926(may)X +1104(be)X +1213(found)X +1444(in)X +1539(the)X +1673(shared)X +1928(memory)X +2248(example)X +2573(in)X +2668(Figure)X +2924(4.)X +3016(In)X +3115(that)X +3274(example,)X +3621(it)X +3697(is)X +3782(easy)X +3963(to)X +576 1024(see)N +714(that)X +873(the)X +1007(processes)X +1369(may)X +1547(access)X +1797(the)X +1931(shared)X +2186(memory)X +2506(segment)X +2826(in)X +2922(an)X +3032(incorrect)X +2 f +3372(order)X +1 f +3594(even)X +3787(though)X +576 1136(each)N +767(will)X +935(have)X +1131(exclusive)X +1494(access)X +1748(to)X +1847(it.)X +1949(A)X +2042(possible)X +2361(recti\256cation)X +2813(of)X +2915(this)X +3072(situation)X +3406(is)X +3494(to)X +3592(use)X +3738(the)X +3 f +3875(lock)X +1 f +576 1248(construct)N +925(as)X +1025(shown)X +1281(in)X +1377(Figure)X +1634(5;)X +1730(however,)X +2081(in)X +2177(practice)X +2483(it)X +2560(is)X +2646(more)X +2854(likely)X +3083(that)X +3243(a)X +3309(transmitted)X +3734(message)X +576 1360(or)N +671(the)X +3 f +801(waituntil)X +1 f +1161(facility)X +1434(will)X +1594(be)X +1699(used)X +1882(to)X +1973(resolve)X +2249(such)X +2432(situations.)X +8 f +735 1632(/*)N +894(Process)X +1318(A)X +1424(*/)X +735 1744(/*-----------*/)N +735 1856 0.1969(lock\("fillmatrix",5\);)AN +735 1968(/*)N +894(Allocate,)X +1424(attach,)X +1848(fill,)X +2166(and)X +2378(detach)X +2749(shared)X +3120(mem)X +3332(segment.)X +3809(*/)X +735 2080 0.1969(unlock\("fillmatrix"\);)AN +735 2304(/*)N +894(Process)X +1318(B)X +1424(*/)X +735 2416(/*-----------*/)N +735 2528(loop:)N +894 2640 0.1969(lock\("fillmatrix",5\);)AN +894 2752(if)N +1053(\(shmatfloat\(...\))X +1954(==)X +2113 0.1974(SEGMENT_NONEXISTENT\))AX +3226({)X +1053 2864 0.1969(unlock\("fillmatrix"\);)AN +1053 2976(sleep\(1\);)N +1053 3088(goto)N +1318(loop;)X +894 3200(})N +735 3312(/*)N +894(Read)X +1159(values)X +1530(out)X +1742(of)X +1901(shared)X +2272(mem)X +2484(segment,)X +2961(detach,)X +3385(&)X +3491(free)X +3756(*/)X +1 f +1651 3472(Figure)N +1903(5)X +1969(:)X +2016(Use)X +2174(of)X +2269(the)X +7 f +2399(lock)X +1 f +2633(construct)X +776 3836(It)N +855(should)X +1115(be)X +1223(noted)X +1444(that)X +1602(the)X +3 f +1735(lock)X +1 f +1917(construct)X +2265(is)X +2350(intended)X +2680(in)X +3 f +9 s +2771(PVM)X +1 f +11 s +2961(for)X +3089(obtaining)X +3449(exclusive)X +3808(access)X +576 3948(to)N +674(resources)X +1033(at)X +1125(a)X +1192(large-grained)X +1689(level,)X +1911(as)X +2012(opposed)X +2333(to)X +2430(loop)X +2615(level)X +2815(locking)X +3108(of)X +3209(shared)X +3466(variables)X +3812(that)X +3973(is)X +576 4060(common)N +908(on)X +1019(shared)X +1271(memory)X +1588(machines.)X +1966(Once)X +2174(again,)X +2410(a)X +2473(component)X +2889(that)X +3046(executes)X +3373(on)X +3485(such)X +3670(a)X +3733(machine)X +576 4172(would)N +833(be)X +953(programmed)X +1440(to)X +1546(use)X +1699(internal)X +2005(locking)X +2306(constructs)X +2699(where)X +2949(appropriate,)X +3408(and)X +3 f +9 s +3567(PVM)X +1 f +11 s +3767(locking)X +576 4284(facilities)N +905(for)X +1032(resource)X +1354(sharing)X +1638(between)X +1956(other)X +2162(components)X +2613(that)X +2771(executed)X +3109(on)X +3222(other)X +3428(architectures.)X +3925(An)X +576 4396(example)N +903(code)X +1097(skeleton)X +1419(depicting)X +1776(this)X +1932(situation)X +2265(on)X +2381(a)X +2447(Sequent)X +2758(shared)X +3014(memory)X +3335(multiprocessor)X +3886([19])X +576 4508(is)N +657(shown)X +908(in)X +999(Figure)X +1251(6.)X +3 f +576 4956(2.4.)N +752(Miscellaneous)X +1303(Facilities)X +1 f +776 5208(In)N +874(addition)X +1189(to)X +1284(the)X +1418(primary)X +1723(constructs)X +2106(described)X +2469(in)X +2564(the)X +2698(preceding)X +3071(sections,)X +3403(a)X +3468(few)X +3625(miscellane-)X +576 5320(ous)N +737(constructs)X +1132(are)X +1277(also)X +1457(provided.)X +1830(The)X +3 f +2005(status)X +1 f +2262(construct)X +2623(takes)X +2842(a)X +2919(component)X +3349(name)X +3578(and)X +3743(instance)X +576 5432(number)N +870(as)X +968(arguments)X +1360(and)X +1512(returns)X +1781(status)X +2007(and)X +2159(location)X +2469(information)X +2911(regarding)X +3274(that)X +3433(component.)X +3895(The)X +3 f +576 5544(entercomp)N +1 f +1000(construct)X +1347(permits)X +1636(dynamic)X +1963(additions)X +2310(to)X +2402(the)X +2533(component)X +2948(description)X +3363(table.)X +3580(The)X +3 f +3740(shmstat)X +1 f +576 5656(construct)N +929(is)X +1018(used)X +1209(to)X +1308(obtain)X +1559(information)X +2007(about)X +2234(active)X +2476(shared)X +2736(memory)X +3061(regions,)X +3373(while)X +3600(the)X +3 f +3739(lockstat)X +1 f +576 5768(primitive)N +935(reports)X +1213(the)X +1355(status)X +1590(of)X +1697(active)X +1942(locks.)X +2184(A)X +2281(complete)X +2639(list)X +2782(of)X +2889(all)X +3012(the)X +3154(user)X +3334(interface)X +3675(constructs)X + +11 p +%%Page: 11 11 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(11)X +2370(-)X +8 f +1106 736(.)N +1212(.)X +1318(.)X +1106 848(CALL)N +1371 0.1942(shmatfloat\("A_row1",A,"RW",5\))AX +7 f +1106 960({Lock)N +1424(&)X +1530(map)X +1742(row)X +1954(1)X +2060(of)X +2219(an)X +2 f +2378(external)X +7 f +2720(shared)X +3091(array)X +3409(to)X +3568(A})X +8 f +1106 1072(.)N +1212(.)X +1318(.)X +788 1184(C$DOACROSS)N +1371(SHARE\(A,index\))X +1106 1296(do)N +1265(20)X +1424(i)X +1530(=)X +1636(1,)X +1795(100)X +1106 1408(.)N +1212(.)X +1318(.)X +1106 1520(CALL)N +1371(m_lock)X +7 f +1106 1632({Local,)N +1530(loop)X +1795(level)X +2113(lock)X +2378(to)X +2537(indicate)X +3014(critical)X +3491(section})X +8 f +1106 1744(index)N +1424(=)X +1530(index)X +1848(+)X +1954(1)X +1106 1856(CALL)N +1371(m_unlock)X +1106 1968(.)N +1212(.)X +1318(.)X +788 2080(20)N +1106(continue)X +1106 2192(.)N +1212(.)X +1318(.)X +1106 2304(CALL)N +1371 0.1974(shmdtfloat\("A_row1"\))AX +7 f +1106 2416({Unlock)N +1530(and)X +1742(unmap)X +2060(external)X +2537(shared)X +2908(array})X +8 f +1106 2528(.)N +1212(.)X +1318(.)X +1 f +1173 2688(Figure)N +1425(6:)X +3 f +9 s +1516(PVM)X +1 f +11 s +1702(locking)X +1989(contrasted)X +2373(to)X +2464(machine)X +2785(dependent)X +3169(locking)X +576 2912(along)N +794(with)X +973(their)X +1157(argument)X +1512(lists)X +1677(and)X +1826(a)X +1887(one-line)X +2198(description)X +2612(of)X +2707(each)X +2890(is)X +2971(given)X +3189(in)X +3280(the)X +3410(appendix.)X +3 f +576 3248(3.)N +686(PVM)X +908(System)X +1198(Design)X +1474(and)X +1638(Implementation)X +1 f +776 3500(The)N +3 f +9 s +938(PVM)X +1 f +11 s +1131(support)X +1424(software)X +1756(executes)X +2089(as)X +2192(a)X +2261(user-level)X +2638(process)X +2931(on)X +3049(each)X +3240(host)X +3417(in)X +3516(the)X +3654(participant)X +576 3612(pool.)N +778(An)X +908(initial)X +1139(set)X +1260(of)X +1356(participating)X +1825(hosts)X +2028(is)X +2109(statically)X +2451(identi\256ed;)X +2832(additions)X +3178(or)X +3273(deletions)X +3614(are)X +3743(possible)X +576 3724(during)N +842(operation)X +1212(by)X +1337(means)X +1599(of)X +1709(an)X +1829(administration)X +2377(interface.)X +2744(The)X +3 f +9 s +2914(PVM)X +1 f +11 s +3115(system)X +3397(is)X +3493(designed)X +3843(to)X +3949(be)X +576 3836(implemented)N +1061(in)X +1153(a)X +1215(manner)X +1502(that)X +1658(requires)X +1964(no)X +2075(operating)X +2431(system)X +2699(changes)X +3005(or)X +3101(modi\256cations,)X +3627(and)X +3777(porting)X +576 3948(efforts)N +834(to)X +932(varied)X +1181(operating)X +1544(system)X +1819(environments)X +2329(are)X +2466(minimal.)X +2814(The)X +3 f +9 s +2977(PVM)X +1 f +11 s +3171(support)X +3465(process)X +3758(\(termed)X +2 f +576 4060(pvmd)N +1 f +766(\))X +828(on)X +949(a)X +1021(host)X +1201(is)X +1293(responsible)X +1727(for)X +1862(all)X +1983(application)X +2408(component)X +2832(processes)X +3200(executing)X +3575(on)X +3695(that)X +3860(host;)X +576 4172(however,)N +922(there)X +1120(is)X +1202(no)X +1313(central)X +1576(or)X +1672(master)X +1930(instance)X +2242(of)X +2 f +2338(pvmd)X +1 f +2528(.)X +2573(Control)X +2866(is)X +2948(completely)X +3364(distributed)X +3765(\(by)X +3905(vir-)X +576 4284(tue)N +714(of)X +817(all)X +2 f +936(pvmd)X +1 f +1156(processes)X +1522(possessing)X +1928(global)X +2179(knowledge\))X +2624(in)X +2722(the)X +2859(interest)X +3148(of)X +3250(avoiding)X +3588(performance)X +576 4396(bottlenecks)N +1003(and)X +1155(increasing)X +1542(fault)X +1729(tolerance.)X +2099(The)X +2 f +2261(pvmd)X +1 f +2476(processes)X +2837(are)X +2969(initiated)X +3285(on)X +3398(each)X +3585(participating)X +576 4508(host)N +770(either)X +1018(manually,)X +1416(through)X +1737(the)X +1892(administration)X +2450(interface,)X +2827(or)X +2947(via)X +3102(a)X +3188(machine/OS)X +3670(dependent)X +576 4620(mechanism)N +1004(such)X +1191(as)X +2 f +1290(inetd)X +1 f +1493(in)X +1588(the)X +1723(Unix)X +1926(environment.)X +2443(In)X +2543(this)X +2698(section,)X +2997(the)X +3132(key)X +3286(design)X +3543(aspects)X +3824(of)X +3924(the)X +2 f +576 4732(pvmd)N +1 f +788(software)X +1112(are)X +1241(discussed)X +1600(with)X +1779(an)X +1884(emphasis)X +2234(on)X +2344(the)X +2474(protocol)X +2790(algorithms)X +3190(used.)X +3 f +576 5068(3.1.)N +752(Basic)X +975(Facilities)X +1 f +776 5320(In)N +894(terms)X +1135(of)X +1253(network)X +1586(capabilities,)X +2056(the)X +3 f +9 s +2205(PVM)X +1 f +11 s +2414(system)X +2704(assumes)X +3042(only)X +3244(that)X +3422(unreliable,)X +3842(unse-)X +576 5432(quenced,)N +934(point-to-point)X +1467(data)X +1656(transfer)X +1966(\(but)X +2150(with)X +2349(data)X +2538(integrity\))X +2909(facilities)X +3256(are)X +3405(supported)X +3794(by)X +3924(the)X +576 5544(hardware)N +926(platform)X +1255(on)X +1368(which)X +1608(it)X +1683(executes.)X +2033(The)X +2195(required)X +2513(reliability)X +2883(and)X +3035(sequencing,)X +3478(as)X +3576(well)X +3753(as)X +3851(other)X +576 5656(necessary)N +943(operations)X +1336(such)X +1522(as)X +1620(broadcast,)X +2004(are)X +2136(built)X +2324(into)X +2487(the)X +3 f +9 s +2616(PVM)X +1 f +11 s +2805(system)X +3075(in)X +3169(the)X +3302(interest)X +3587(of)X +3685(ef\256ciency)X +576 5768(and)N +729(portability.)X +1146(While)X +1388(it)X +1464(is)X +1550(true)X +1714(that)X +1874(most)X +2073(operating)X +2433(systems)X +2739(in)X +2835(existence)X +3190(already)X +3476(support)X +3767(reliable)X + +12 p +%%Page: 12 12 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(12)X +2370(-)X +576 688(and)N +734(sequenced)X +1131(data)X +1309(delivery,)X +1651(in)X +1751(most)X +1954(cases)X +2170(this)X +2329(is)X +2419(via)X +2558(the)X +2697(use)X +2844(of)X +2947(virtual)X +3208(circuits)X +3498(\320)X +3616(for)X +3748(the)X +3886(pro-)X +576 800(jected)N +816(use)X +962(of)X +3 f +9 s +1060(PVM)X +1 f +11 s +1224(,)X +1275(the)X +1412(overheads)X +1797(and)X +1953(scalability)X +2346 0.3625(limitations)AX +2756(of)X +2859(using)X +3080(such)X +3271(a)X +3340(service)X +3619(directly)X +3919(did)X +576 912(not)N +721(warrant)X +1020(its)X +1135(adoption.)X +1497(In)X +1601(the)X +1740(test)X +1894 0.2500(implementations)AX +2515(of)X +3 f +9 s +2615(PVM)X +1 f +11 s +2779(,)X +2832(the)X +2971(UDP)X +3177([11])X +3354(protocol)X +3679(was)X +3846(used;)X +576 1024(this)N +727(deliberate)X +1098(choice)X +1351(of)X +1447(a)X +1509(simple)X +1768(datagram)X +2119(protocol)X +2437(also)X +2603(permits)X +2892(relatively)X +3250(simple)X +3510(porting)X +3789(or)X +3886(pro-)X +576 1136(tocol)N +775(conversion)X +1183(when)X +3 f +9 s +1391(PVM)X +1 f +11 s +1577(is)X +1658(to)X +1749(be)X +1854(installed)X +2176(under)X +2398(a)X +2459(different)X +2784(operating)X +3139(system)X +3406(environment.)X +776 1388(Across)N +1042(the)X +1173(network,)X +2 f +1506(pvmd)X +1 f +1719(processes)X +2078(communicate)X +2577(using)X +2791(UDP)X +2990(datagrams.)X +3420(The)X +3581("well)X +3793(known)X +576 1500(port")N +777(approach)X +1122(is)X +1203(used)X +1386(for)X +1510(addressing;)X +1933(all)X +2044(incoming)X +2400(messages)X +2754(are)X +2883(received)X +3203(by)X +2 f +3313(pvmd)X +1 f +3525(processes)X +3883(on)X +3993(a)X +576 1612(predetermined)N +1132(port)X +1321(number.)X +1659(For)X +1828(user-process)X +2313(to)X +2429(user-process)X +2914(communication,)X +3533(the)X +3689(following)X +576 1724(scheme)N +887(is)X +993(employed.)X +1410(The)X +1594(\256rst)X +1778(communication)X +2375(instance)X +2710(between)X +3049(any)X +3222(two)X +3400(entities)X +3702(is)X +3807(routed)X +576 1836(through)N +880(the)X +2 f +1018(pvmd)X +1 f +1239(processes)X +1606(on)X +1725(the)X +1864(source)X +2124(and)X +2282(destination)X +2701(machines.)X +3087(Location)X +3432(and)X +3590(port)X +3763(number)X +576 1948(information)N +1032(is)X +1130(appended)X +1506(to)X +1614(this)X +1781(exchange;)X +2177(the)X +3 f +9 s +2320(PVM)X +1 f +11 s +2522(routines)X +2844(\(linked)X +3132(to)X +3239(the)X +3385(user)X +3569(process\))X +3899(that)X +576 2060(implement)N +3 f +981(send)X +1 f +1179(and)X +3 f +1333(recv)X +1 f +1521(cache)X +1748(this)X +1903(information,)X +2369(thus)X +2543(enabling)X +2874(direct)X +3102(communication)X +3679(for)X +3808(subse-)X +576 2172(quent)N +796(exchanges.)X +1230(Local)X +1455(user)X +1625(processes)X +1985(communicate)X +2485(with)X +2 f +2666(pvmd)X +1 f +2880(using)X +3095(the)X +3226(most)X +3421(ef\256cient)X +3733(machine)X +576 2284(dependent)N +970(mechanism)X +1405(available)X +1757(and)X +1917(the)X +2058(development)X +2547(of)X +2653(this)X +2814(mechanism)X +3249(is)X +3341(deemed)X +3648(part)X +3818(of)X +3924(the)X +576 2396(installation)N +995(procedure.)X +1415(However,)X +1783(the)X +1915(generic)X +2198(version)X +2503(of)X +2 f +2600(pvmd)X +1 f +2814(may)X +2990(be)X +3097(adopted;)X +3425(this)X +3577(utilizes)X +3857(UDP)X +576 2508(datagrams)N +961(once)X +1150(again,)X +1386(via)X +1517(the)X +1649(loopback)X +1996(interface)X +2328(if)X +2406(one)X +2557(is)X +2640(available.)X +3005(The)X +2 f +3166(pvmd)X +1 f +3380(process)X +3667(uses)X +3842(a)X +3905(dif-)X +576 2620(ferent,)N +825(predetermined)X +1356(port)X +1520(number)X +1811(for)X +1935(incoming)X +2291(messages)X +2645(from)X +2838(all)X +2949(local)X +3143(user)X +3311(processes.)X +3 f +576 2956(3.2.)N +752(Point-to-Point)X +1307(Data)X +1509(Transfer)X +1 f +776 3208(To)N +896(achieve)X +1187(reliable)X +1474(and)X +1623(sequenced)X +2011(point-to-point)X +2524(communications,)X +3152(the)X +2 f +3282(pvmd)X +1 f +3494(processes)X +3853(use)X +3993(a)X +576 3320(positive)N +892(acknowledgment)X +1530(scheme)X +1829(and)X +1991(an)X +2109(additional)X +2498(header)X +2767(that)X +2935(contains)X +3264(sequence)X +3621(numbers)X +3959(as)X +576 3432(well)N +758(as)X +861(fragmentation)X +1386(and)X +1543(reassembly)X +1969(information.)X +2438(Unacknowledged)X +3083(transmissions)X +3594(are)X +3732(retried)X +3993(a)X +576 3544(parameterized)N +1104(number)X +1402(of)X +1504(times)X +1725(after)X +1915(which)X +2159(the)X +2296(recipient)X +2634(process)X +2926(or)X +3028(processor)X +3393(is)X +3481(presumed)X +3852(to)X +3949(be)X +576 3656(inoperative.)N +1019(The)X +1180(sequence)X +1526(numbers)X +1853(are)X +1984(destination)X +2396(speci\256c)X +2689(and)X +2840(are)X +2971(used)X +3156(by)X +3268(the)X +3400(message)X +3723(recipient)X +576 3768(for)N +716(sequencing)X +1150(as)X +1261(well)X +1451(as)X +1562(for)X +1702(duplicate)X +2064(detection.)X +2448(The)X +2623(header)X +2895(is)X +2992(placed)X +3260(at)X +3362(the)X +3507(end)X +3671(of)X +3781(a)X +3857(UDP)X +576 3880(datagram)N +936(to)X +1037(reduce)X +1303(copying)X +1619(overheads,)X +2029(and)X +2189(single)X +2433(datagram)X +2794(sizes)X +2998(are)X +3138(restricted)X +3499(to)X +3601(the)X +3742(smallest)X +576 3992(MTU)N +824(\(maximum)X +1265(transmission)X +1764(unit\))X +1984(of)X +2109(all)X +2250(participating)X +2749(hosts.)X +3026(When)X +3288(\256rst)X +3477(initiated,)X +2 f +3842(pvmd)X +1 f +576 4104(processes)N +940(determine)X +1321(the)X +1457(protocol)X +1779(speci\256c)X +2076(addresses)X +2440(of)X +2541(all)X +2658(participating)X +3133(hosts)X +3342(and)X +3497(proceed)X +3803(to)X +3901(ser-)X +576 4216(vice)N +745(incoming)X +1101(requests)X +1411(from)X +1604(the)X +1734(network)X +2044(or)X +2139(user)X +2307(processes)X +2665(in)X +2756(an)X +2861(in\256nite)X +3134(loop.)X +776 4468(Each)N +2 f +977(pvmd)X +1 f +1192(process)X +1480(maintains)X +1849(information)X +2292(concerning)X +2709(the)X +2843(location)X +3154(and)X +3307(status)X +3534(of)X +3633(all)X +3748(applica-)X +576 4580(tion)N +742(component)X +1162(processes.)X +1548(A)X +1639(user)X +3 f +1812(send)X +1 f +2010(is)X +2096(addressed)X +2469(to)X +2565(a)X +2631(component)X +3050(name)X +3268(and)X +3422(instance)X +3738(number;)X +576 4692(the)N +712(local)X +2 f +912(pvmd)X +1 f +1130(determines)X +1545(the)X +1681(physical)X +2003(location)X +2316(of)X +2417(that)X +2578(process)X +2869(and)X +3024(forwards)X +3363(the)X +3499(message)X +3826(to)X +3924(the)X +576 4804(remote)N +2 f +849(pvmd)X +1 f +1039(.)X +1089(As)X +1214(described,)X +1601(the)X +1737(user)X +1911(process)X +2202(library)X +2465(performs)X +2810(this)X +2966(translation)X +3367(for)X +3497(the)X +3633(second)X +3905(and)X +576 4916(subsequent)N +1005(messages.)X +1397(The)X +1572(source)X +1839(component)X +2269(name)X +2498(and)X +2663(instance)X +2990(number)X +3297(are)X +3442(appended)X +3817(to)X +3924(the)X +576 5028(message,)N +929(enabling)X +1266(message)X +1597(delivery)X +1919(with)X +2109(an)X +2225(indication)X +2612(of)X +2718(the)X +2859(sender's)X +3183(identity.)X +3508(As)X +3637(mentioned,)X +576 5140(executing)N +958(the)X +3 f +1105(enroll)X +1 f +1365(construct)X +1727(is)X +1825(a)X +1903(precondition)X +2388(to)X +2496(user)X +2682(process)X +2985(participation)X +3472(\320)X +3600(in)X +3709(the)X +3857(UDP)X +576 5252 0.2679(implementation,)AN +1176(this)X +1326(supplies)X +1637(to)X +1728(the)X +1858(local)X +2 f +2052(pvmd)X +1 f +2264(the)X +2394(receiving)X +2744(port)X +2908(number)X +3199(of)X +3294(the)X +3424(user)X +3592(process.)X + +13 p +%%Page: 13 13 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(13)X +2370(-)X +3 f +576 688(3.3.)N +752(Message)X +1091(Broadcasting)X +1 f +776 940(Broadcast)N +1161(is)X +1253(a)X +1326(commonly)X +1738(performed)X +2138(operation)X +2505(in)X +2608(the)X +3 f +9 s +2746(PVM)X +1 f +11 s +2944(system,)X +3245(both)X +3436(because)X +3748(applica-)X +576 1052(tions)N +772(desire)X +1006(such)X +1191(a)X +1254(facility)X +1529(and)X +1680(since)X +1885(it)X +1959(is)X +2042(inherent)X +2355(to)X +2448(the)X +2580(completely)X +2997(distributed)X +3399(nature)X +3643(of)X +3740(the)X +3 f +9 s +3868(PVM)X +1 f +11 s +576 1164(support)N +888(software.)X +1261(All)X +2 f +1423(pvmd)X +1 f +1662(processes)X +2047(maintain)X +2406(information)X +2872(regarding)X +3258(all)X +3396(processes,)X +3803(shared)X +576 1276(memory)N +900(segments,)X +1280(and)X +1437(locks,)X +1675(to)X +1774(guard)X +2004(against)X +2284(loss)X +2451(of)X +2553(context)X +2842(and)X +2998(state)X +3189(in)X +3287(the)X +3424(event)X +3644(of)X +3746(failures.)X +576 1388(User)N +779(process)X +1080(broadcasts)X +1489(are)X +1635(\256rst)X +1811(delivered)X +2178(sequentially)X +2644(to)X +2752(local)X +2963(recipient)X +3311(user)X +3496(processes)X +3871(after)X +576 1500(which)N +814(the)X +945(local)X +2 f +1139(pvmd)X +1 f +1351(process)X +1636(broadcasts)X +2029(over)X +2207(the)X +2337(network)X +2647(to)X +2738(all)X +2849(other)X +2 f +3052(pvmd)X +1 f +3264(processes)X +3622(that)X +3777(in)X +3868(turn,)X +576 1612(deliver)N +843(the)X +973(message)X +1293(to)X +1384(their)X +1568(local)X +1762(user)X +1930(process)X +2215(recipients.)X +2602(Although)X +2957(most)X +3151(computing)X +3552(environments)X +576 1724(support)N +865(a)X +929(network)X +1242(broadcast)X +1604(facility,)X +2 f +1902(pvmd)X +1 f +2117(broadcast)X +2479(is)X +2563(implemented)X +3049(in)X +3 f +9 s +3138(PVM)X +1 f +11 s +3326(using)X +3541(point-to-point)X +576 1836(messages)N +948(with)X +1145(recursive)X +1507(doubling.)X +1883(This)X +2080(decision)X +2414(was)X +2590(made)X +2821(in)X +2931(the)X +3080(interest)X +3381(of)X +3495(portability)X +3905(and)X +576 1948(ef\256ciency;)N +974(given)X +1196(that)X +1355(network)X +1669(broadcast)X +2032(is)X +2116(unreliable,)X +2516(acknowledgments)X +3177(are)X +3309(necessary)X +3675(from)X +3871(each)X +576 2060(recipient,)N +937(resulting)X +1277(in)X +2 f +1377(O)X +1 f +1454(\()X +2 f +1483(p)X +1 f +1534(\))X +1594(time)X +1783(\()X +2 f +1812(p)X +1 f +2 f +9 f +1885(+)X +1 f +1955(1)X +2030(sequential)X +2419(steps)X +2626(are)X +2764(to)X +2864(be)X +2978(performed)X +3375(by)X +3494(the)X +3633(originator\),)X +576 2172(while)N +799(recursive)X +1148(doubling)X +1489(broadcast)X +1852(is)X +1937(accomplished)X +2448(in)X +2 f +2543(O)X +1 f +2620(\(log)X +8 s +2762 2189(2)N +11 s +2 f +2823 2172(p)N +1 f +2874(\))X +2929(time,)X +3135(where)X +2 f +3375(p)X +1 f +3445(is)X +3530(the)X +3664(number)X +3959(of)X +576 2284(processors.)N +993(The)X +1155(participating)X +1627(pool)X +1809(of)X +1907(hosts)X +2113(is)X +2197(logically)X +2532(numbered)X +2909(from)X +3105(0)X +3174(to)X +2 f +3268(p)X +9 f +3326(-)X +1 f +3374(1,)X +3466(and)X +3619(the)X +3753(origina-)X +576 2396(tor)N +697(\(or)X +822(root\))X +1016(of)X +1112(the)X +1243(broadcast)X +1603(is)X +1685(part)X +1845(of)X +1941(the)X +2072(broadcast)X +2432(message.)X +2775(There)X +3002(is)X +3083(one)X +2 f +3232(pvmd)X +1 f +3444(process)X +3729(per)X +3863(host,)X +576 2508(which)N +840(represents)X +1223(that)X +1383(processor.)X +1768(Broadcast)X +2147(proceeds)X +2486(in)X +2582("rounds",)X +2943(with)X +3128(the)X +3264(number)X +3561(of)X +3662(processors)X +576 2620(contributing)N +1031(to)X +1123(the)X +1254(broadcast)X +1614(effort)X +1832(doubling)X +2169(in)X +2261(each)X +2445(round.)X +2717(In)X +2813(any)X +2963(round,)X +3212(processor)X +2 f +3570(i)X +1 f +3617(transmits)X +3963(to)X +2 f +576 2732(i)N +1 f +2 f +9 f +630(+)X +1 f +700(2)X +2 f +8 s +2697(r)Y +1 f +11 s +2 f +798 2732(mod)N +1 f +2 f +978(p)X +1 f +1050(and)X +1206(receives)X +1523(an)X +1635(acknowledgment.)X +2288(A)X +2380(processor)X +2 f +2752(j)X +1 f +2806(joins)X +3007(the)X +3144(broadcast)X +3510(effort)X +3734(at)X +3827(round)X +2 f +576 2844(r)N +8 s +615 2861(j)N +1 f +11 s +640 2844(,)N +700(where)X +2 f +952(r)X +8 s +991 2861(j)N +1 f +11 s +2 f +9 f +1038 2844(=)N +1 f +2 f +1108(no.)X +1 f +2 f +1247(of)X +1 f +2 f +1345(signi\256cant)X +1 f +2 f +1742(bits)X +1 f +2 f +1899(in)X +1 f +1997(\()X +2 f +2033(j)X +1 f +2 f +9 f +2087(-)X +1 f +2 f +2157(root)X +1 f +2311(\))X +2 f +2362(mod)X +1 f +2 f +2542(p)X +1 f +(.)S +2668(In)X +2779(the)X +2924(event)X +3152(of)X +3262(processor)X +3635(failure,)X +3924(the)X +2 f +576 2956(pvmd)N +1 f +792(process)X +1081(that)X +1241(\256rst)X +1405(detects)X +1677(the)X +1812(failure)X +2069(assumes)X +2389(the)X +2524(broadcast)X +2888(duties)X +3126(of)X +3226(the)X +3361(failed)X +3589(processor.)X +3974(If)X +576 3068(the)N +709(quantity)X +1024(2\(2)X +2 f +8 s +1141 3033(r)N +1 f +11 s +1173 3068(\))N +1226(is)X +1309(less)X +1465(than)X +1641(2)X +1707(log)X +8 s +1820 3085(2)N +11 s +2 f +1881 3068(p)N +1 f +(,)S +1971(failure)X +2225(noti\256cation)X +2652(is)X +2735(piggybacked)X +3209(on)X +3321(the)X +3453(broadcast,)X +3836(at)X +3924(the)X +576 3180(end)N +733(of)X +836(which)X +1081(the)X +1219(remaining)X +1607(processors)X +2007(are)X +2144(individually)X +2602(informed.)X +2978(Otherwise,)X +3392(the)X +3531(detecting)X +3886(pro-)X +576 3292(cessor)N +817(initiates)X +1120(another)X +1406(broadcast)X +1765(with)X +1944(failure)X +2196(information,)X +2657(at)X +2743(completion)X +3163(of)X +3258(the)X +3388(current)X +3659(broadcast.)X +776 3544(The)N +2 f +950(pvmd)X +1 f +1177(processes)X +1550(execute)X +1856(a)X +1932(\256nite)X +2151(state)X +2350(machine)X +2686(which)X +2938(gives)X +3161(precedence)X +3593(to)X +3700(messages)X +576 3656(\(requests\))N +960(incoming)X +1332(while)X +1566(another)X +1867(activity)X +2170(is)X +2266(in)X +2372(progress.)X +2728(Such)X +2941(a)X +3017(scheme)X +3318(is)X +3414(adopted)X +3730(to)X +3836(avoid)X +576 3768(deadlock;)N +941(two)X +1095(processes)X +1453(transmitting)X +1903(to)X +1994(each)X +2177(other)X +2380(may)X +2554(both)X +2733(wait)X +2908(inde\256nitely)X +3334(for)X +3459(each)X +3643(others)X +3881(ack-)X +576 3880(nowledgment)N +1084(if)X +1166(this)X +1322(precedence)X +1745(rule)X +1910(were)X +2108(not)X +2249(followed.)X +2612(It)X +2694(should)X +2957(also)X +3126(be)X +3236(pointed)X +3528(out)X +3668(that)X +3828(in)X +3924(the)X +576 3992(case)N +771(of)X +3 f +9 s +884(PVM)X +1 f +11 s +1092(hardware)X +1462(platforms)X +1844(where)X +2102(wide)X +2317(area)X +2508(networks)X +2875(are)X +3027(involved,)X +3403(the)X +3556(choice)X +3831(of)X +3949(an)X +576 4104(appropriate)N +1009(timeout)X +1312(value)X +1535(can)X +1689(signi\256cantly)X +2158(affect)X +2390(the)X +2530(performance)X +3006(of)X +3111(the)X +3251(data)X +3430(transfer)X +3729(mechan-)X +576 4216(isms)N +760(and)X +909(the)X +1039(broadcast)X +1398(process.)X +1705(Further,)X +2008(the)X +2139(present)X +2416 0.2885(implementation)AX +2995(does)X +3179(not)X +3315(perform)X +3621(any)X +3771(optimi-)X +576 4328(zations)N +850(in)X +943(the)X +1075(broadcast)X +1436(scheme)X +1724(when)X +1938(a)X +2001(geographically)X +2548(distant)X +2807(host)X +2977(is)X +3059(at)X +3146(a)X +3208(non-leaf)X +3524(position)X +3832(in)X +3924(the)X +576 4440(broadcast)N +935(spanning)X +1275(tree.)X +3 f +576 4776(3.4.)N +752(Mutual)X +1053(Exclusion)X +1 f +776 5028(Mutual)N +1058(exclusion)X +1423(is)X +1509(another)X +1800(primitive)X +2153(required)X +2474(both)X +2659(in)X +2756(response)X +3091(to)X +3188(user)X +3362(requests)X +3678(as)X +3779(well)X +3959(as)X +576 5140(for)N +2 f +723(pvmd)X +1 f +958(coordination.)X +1471(Examples)X +1863(are)X +2014(exclusive)X +2391(access)X +2659(to)X +2772(emulated)X +3140(shared)X +3413(memory,)X +3773(general)X +576 5252(resource)N +928(locking,)X +1270(and)X +1452(assignment)X +1904(of)X +2033(unique)X +2329(instance)X +2674(numbers)X +3033(for)X +3191(application)X +3640(component)X +576 5364(processes.)N +973(Distributed)X +1409(mutual)X +1694(exclusion)X +2071(is)X +2168(normally)X +2525(achieved)X +2876(by)X +3002(unanimous)X +3427(or)X +3538(majority)X +3876(con-)X +576 5476(sensus;)N +871(a)X +951(requesting)X +1359(process)X +1663(that)X +1837(receives)X +2166(permission)X +2594(from)X +2806(a)X +2887(certain)X +3169(number)X +3480(of)X +3595(processes)X +3973(is)X +576 5588(deemed)N +877(to)X +973(have)X +1166(acquired)X +1496(the)X +1631(lock.)X +1832(Different)X +2181(strategies,)X +2562(varying)X +2857(in)X +2952(their)X +3140(approach,)X +3510(ef\256ciency,)X +3905(and)X +576 5700(level)N +779(of)X +883(failure)X +1144(resiliency)X +1518(have)X +1716(been)X +1914(proposed)X +2268(and)X +2427(representative)X +2953(methods)X +3284(are)X +3423(described)X +3792(in)X +3893([12,)X +576 5812(13,)N +727(14].)X +907(The)X +1085(strategy)X +1405(adopted)X +1725(in)X +3 f +9 s +1831(PVM)X +1 f +11 s +2036(is)X +2136(somewhat)X +2534(different)X +2878(from)X +3090(these)X +3312(approaches,)X +3770(but)X +3924(the)X + +14 p +%%Page: 14 14 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(14)X +2370(-)X +576 688(algorithm)N +953(is)X +1046(ef\256cient)X +1369(and,)X +1552(more)X +1767(importantly,)X +2236(is)X +2329(integrated)X +2716(with)X +2907(the)X +3049(required)X +3376(distribution)X +3840(to)X +3943(all)X +2 f +576 800(pvmd)N +1 f +766(s)X +822(of)X +917(lock)X +1091(location)X +1398(information.)X +776 1052(A)N +2 f +862(pvmd)X +1 f +1075(process,)X +1383(either)X +1607(for)X +1732(its)X +1840(own)X +2015(purposes)X +2351(or)X +2448(on)X +2560(behalf)X +2804(of)X +2901(a)X +2964(local)X +3160(user)X +3330(process,)X +3639(attempts)X +3963(to)X +576 1164(obtain)N +821(a)X +884(lock)X +1060(by)X +1172(broadcasting)X +1646(a)X +1709("claim")X +2002(for)X +2128(the)X +2260(lock.)X +2457(Since)X +2676(all)X +2 f +2788(pvmd)X +1 f +3001(processes)X +3360(possess)X +3646(knowledge)X +576 1276(regarding)N +935(the)X +1065(use)X +1204(\(and)X +1382(location\))X +1718(of)X +1813(all)X +1924(locks,)X +2154(such)X +2337(an)X +2442(attempt)X +2730(will,)X +2912(of)X +3007(course,)X +3280(only)X +3460(be)X +3566(made)X +3780(when)X +3993(a)X +576 1388(lock)N +754(is)X +839(known)X +1104(to)X +1199(be)X +1308(free)X +1469(at)X +1558(the)X +1691(start)X +1868(of)X +1966(the)X +2099(claim.)X +2343(In)X +2441(the)X +2574(absence)X +2877(of)X +2975(con\257icting)X +3378(claims)X +3634(\(a)X +3727(situation)X +576 1500(most)N +774(likely)X +1002(to)X +1097(be)X +1206(encountered)X +1662(in)X +1757(practice\),)X +2113(the)X +2247(requester,)X +2618(after)X +2806(the)X +2941(broadcast)X +3305(has)X +3449(been)X +3642(completed,)X +576 1612(can)N +728(assume)X +1017(that)X +1180(the)X +1318(lock)X +1500(has)X +1647(been)X +1843(successfully)X +2303(obtained.)X +2659(In)X +2762(the)X +2900(process,)X +3215(all)X +3334(other)X +2 f +3544(pvmd)X +1 f +3734(s)X +3797(update)X +576 1724(their)N +766(lock)X +946(table)X +1146(information,)X +1613(and)X +1768 0.2955(\(implicitly\))AX +2201(grant)X +2411(the)X +2548(requester)X +2899(permission)X +3315(for)X +3446(exclusive)X +3808(access)X +576 1836(to)N +667(the)X +797(particular)X +1157(resource.)X +776 2088(It)N +858(is)X +945(of)X +1046(course)X +1303(possible)X +1620(that)X +1781(two)X +1941(processes)X +2305(may)X +2485(initiate)X +2760(claims)X +3019(on)X +3135(the)X +3272(same)X +3482(resource)X +3808(before)X +576 2200(either)N +802(has)X +944(received)X +1267(the)X +1399(other's)X +1667(request.)X +1989(In)X +3 f +9 s +2082(PVM)X +1 f +11 s +2246(,)X +2292(such)X +2477(situations)X +2840(are)X +2971(resolved)X +3293(using)X +3508(a)X +3571(heuristic)X +3899(that)X +576 2312(assumes)N +897(that)X +1058(communication)X +1636(between)X +1957(any)X +2112(pair)X +2277(of)X +2378(processors)X +2776(takes)X +2985(the)X +3122(same)X +3332(amount)X +3626(of)X +3728(time.)X +3959(In)X +576 2424(particular,)N +962(consider)X +1286(two)X +1444(processors)X +1840(\()X +2 f +1869(pvmd)X +1 f +2085(processes\))X +2 f +2476(A)X +1 f +2556(and)X +2 f +2709(B)X +1 f +2789(that)X +2948(wish)X +3140(to)X +3235(acquire)X +3519(the)X +3652(same)X +3858(lock,)X +576 2536(and)N +726(another)X +1013(processor)X +2 f +1372(C)X +1 f +1431(.)X +1498(Note)X +1692(that)X +1848({)X +2 f +1890(B)X +1 f +1944(,)X +2 f +(C)S +1 f +2025(})X +2090(and)X +2240({)X +2 f +2282(A)X +1 f +2336(,)X +2 f +(C)S +1 f +2417(})X +2482(are)X +2612(in)X +2705(the)X +2837(broadcast)X +3198(spanning)X +3540(trees)X +3730(of)X +2 f +3827(A)X +1 f +3905(and)X +2 f +576 2648(B)N +1 f +655(respectively,)X +1128(possibly)X +1447(at)X +1536(different)X +1864(depths.)X +2141(It)X +2219(may)X +2395(be)X +2502(assumed)X +2829(without)X +3123(loss)X +3284(of)X +3381(generality)X +3758(that)X +2 f +3915(A)X +1 f +3969('s)X +576 2760(processor)N +941(number)X +1239(is)X +1327(less)X +1488(than)X +1669(that)X +1831(of)X +2 f +1933(B)X +1 f +1987(.)X +2038(Under)X +2286(the)X +2423(constant)X +2746(time)X +2933(assumption,)X +3386(both)X +2 f +3572(A)X +1 f +3655(and)X +2 f +3811(B)X +1 f +3894(will)X +576 2872(receive)N +865(each)X +1061(others)X +1311(claims)X +1577(before)X +1836(their)X +2033(broadcast)X +2405(is)X +2499(completed.)X +2924(When)X +2 f +3168(B)X +1 f +3256(receives)X +2 f +3578(A)X +1 f +3632('s)X +3729(claim,)X +3982(it)X +576 2984(computes)N +942(the)X +1078(number)X +1376(of)X +1478(rounds)X +1746(that)X +2 f +1908(A)X +1 f +1962('s)X +2054(broadcast)X +2420(has)X +2566(proceeded;)X +2981(if)X +3064(this)X +3221(number)X +3519(is)X +3607(greater)X +3880(than)X +576 3096(the)N +708(number)X +1001(of)X +1098(rounds)X +1361(that)X +1518(its)X +1626(own)X +1801(broadcast)X +2162(has)X +2303(proceeded,)X +2 f +2710(B)X +1 f +2788(surrenders)X +3177(its)X +3285(claim)X +3505(to)X +3597(the)X +3728(lock.)X +3925(An)X +576 3208(identical)N +910(\(\256rst-claim,)X +1353(\256rst)X +1520(served\))X +1808(policy)X +2059(is)X +2148(followed)X +2491(by)X +2 f +2609(A)X +1 f +2663(.)X +2715(If)X +2803(the)X +2941(broadcast)X +3308(progress)X +3635(metrics)X +3925(are)X +576 3320(the)N +712(same,)X +943(the)X +1079(lower)X +1307(numbered)X +1687(processor)X +2051(is)X +2138(given)X +2362(priority)X +2655(and)X +2810(is)X +2896(considered)X +3304(to)X +3400(have)X +3593(obtained)X +3924(the)X +576 3432(lock.)N +773(The)X +933(passive)X +1215(processor)X +2 f +1574(C)X +1 f +1656(also)X +1821(makes)X +2069(the)X +2200(same)X +2404(decision)X +2721(since)X +2925(it)X +2998(has)X +3138(the)X +3269(capability)X +3641(of)X +3738(comput-)X +576 3544(ing)N +723(the)X +865(number)X +1168(of)X +1274(rounds)X +1546(of)X +1652(broadcast)X +2022(progress)X +2352(that)X +2518(each)X +2712(claimant)X +3050(has)X +3200(made)X +3424(when)X +3647(the)X +3788(second)X +576 3656(such)N +759(broadcast)X +1118(arrives.)X +776 3908(In)N +872(practice)X +1174(however,)X +1521(communication)X +2094(times)X +2309(between)X +2625(arbitrary)X +2951(pairs)X +3145(of)X +3242(processors)X +3636(may)X +3812(not)X +3949(be)X +576 4020(constant;)N +920(further,)X +1206(intervening)X +1633(messages)X +1990(of)X +2088(other)X +2294(types)X +2504(may)X +2680(skew)X +2884(the)X +3016(propagation)X +3461(time)X +3643(of)X +3740(a)X +3803(broad-)X +576 4132(cast)N +759(claim.)X +1046(For)X +1214(practical)X +1564(safety)X +1821(therefore,)X +2207(the)X +2362(originators)X +2791(of)X +2911(con\257icting)X +3336(claims)X +3614(exchange)X +3993(a)X +576 4244(con\256rmatory)N +1061(message)X +1389(\320)X +1507(with)X +1694(the)X +1832(claim)X +2059(being)X +2285(abandoned)X +2696(if)X +2780(their)X +2972(respective)X +3358(notions)X +3647(of)X +3749(the)X +3886(suc-)X +576 4356(cessful)N +848(claimant)X +1181(are)X +1317(not)X +1459(in)X +1557(agreement.)X +1975(In)X +2077(such)X +2267(a)X +2335(situation,)X +2691(the)X +2828(lower)X +3057(numbered)X +3438(processor)X +3803(broad-)X +576 4468(casts)N +769(a)X +830("reset)X +1054(lock")X +1264(message,)X +1606(and)X +1755(the)X +1885(entire)X +2108(process)X +2393(is)X +2474(started)X +2731(afresh,)X +2989(but)X +3124(without)X +3416(competition)X +3861(from)X +576 4580(the)N +707("losing")X +1018(processor.)X +1421(In)X +1517(case)X +1691(of)X +1787(process)X +2073(or)X +2169(processor)X +2528(failures,)X +2837(the)X +2969(strategy)X +3272(of)X +3369(all)X +2 f +3482(pvmd)X +1 f +3696(processes)X +576 4692(possessing)N +979(all)X +1095(information)X +1539(is)X +1624(used)X +1811(to)X +1906(avoid)X +2128(undesirable)X +2560(situations.)X +2947(If)X +3031(a)X +3096(process)X +3385(or)X +3484(processor)X +3846(hold-)X +576 4804(ing)N +716(a)X +782(lock)X +961(terminates)X +1356(without)X +1653(releasing)X +1998(it,)X +2097(the)X +2233(particular)X +2599(resource)X +2924(is)X +3011(marked)X +3303(as)X +3404("defunct";)X +3793(further)X +576 4916(requests)N +886(to)X +977(the)X +1107(resource)X +1426(are)X +1555(denied)X +1812(until)X +1997(an)X +2102(explicit)X +2390(reset)X +2578(is)X +2659(performed.)X +3 f +576 5252(3.5.)N +752(Process)X +1057(control)X +1 f +776 5504(The)N +942 0.3681(initiation)AX +1292(order)X +1506(and)X +1662(process)X +1954(dependencies)X +2458(of)X +2561(application)X +2984(components)X +3440(are)X +3577(described)X +3944(by)X +576 5616(the)N +710(use)X +853(of)X +952(appropriate)X +3 f +1378(initiate)X +1 f +1668(constructs)X +2050(embedded)X +2437(within)X +2688(host)X +2860(language)X +3203(control)X +3478(\257ow)X +3659(statements)X +576 5728(as)N +678(described)X +1044(in)X +1142(the)X +1279(preceding)X +1656(section.)X +1958(This)X +2145(implies)X +2436(that)X +2599(it)X +2679(is)X +2768(not)X +2911(possible)X +3230(to)X +3329(determine)X +3712(statically)X +576 5840(the)N +708(application)X +1125(process)X +1412(\257ow)X +1592(graph)X +1816(as)X +1913(component)X +2329 0.3063(initiations)AX +2708(may)X +2884(be)X +2991(conditional)X +3413(or)X +3510(repeated)X +3832(based)X + +15 p +%%Page: 15 15 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(15)X +2370(-)X +576 688(upon)N +778(parameters)X +1190(known)X +1456(only)X +1640(at)X +1731(execution)X +2101(time.)X +2308(The)X +3 f +9 s +2468(PVM)X +1 f +11 s +2659(system)X +2931(therefore)X +3275(performs)X +3619(process)X +3909(ini-)X +576 800(tiations)N +874(in)X +980(response)X +1324(to)X +1430(requests)X +1755(based)X +1991(upon)X +2203(the)X +2347(resources)X +2714(available)X +3069(and)X +3232(load)X +3420(conditions)X +3824(at)X +3924(the)X +576 912(moment)N +889(of)X +985(the)X +1116(request)X +1393(\320)X +1504(rather)X +1732(than)X +1907(by)X +2019(constructing)X +2479(a)X +2542(predetermined)X +3075(static)X +3286(schedule)X +3618(and)X +3769(process)X +576 1024(to)N +667(processor)X +1025(assignments.)X +776 1276(When)N +1013(an)X +1123(application)X +1543(component)X +1963(process)X +2254(makes)X +2507(an)X +3 f +2618(initiate)X +1 f +2911(request,)X +3215(the)X +3351(local)X +2 f +3551(pvmd)X +1 f +3769(process)X +576 1388(\256rst)N +747(determines)X +1168(a)X +1241(candidate)X +1613(pool)X +1804(of)X +1911(target)X +2146(hosts)X +2361(based)X +2595(upon)X +2805(the)X +2947(information)X +3397(in)X +3499(the)X +3640(component)X +576 1500(description)N +990(\256le.)X +1169(One)X +1337(host)X +1506(is)X +1587(then)X +1761(selected)X +2067(from)X +2260(this)X +2410(pool)X +2589(based)X +2811(upon)X +3009(the)X +3139(following)X +3504(algorithm:)X +576 1668(\(1\))N +776(Select)X +1017(next)X +1194(host)X +1366(from)X +1562(pool)X +1744(in)X +1838(round-robin)X +2283(manner,)X +2594(based)X +2819(upon)X +3020(all)X +3134 0.3063(initiations)AX +3515(that)X +3674(originated)X +776 1780(here.)N +576 1920(\(2\))N +776(Obtain)X +1040(load)X +1216(metric)X +1467(\(decayed)X +1809(average)X +2107(of)X +2205(number)X +2499(of)X +2597(processes)X +2958(in)X +3052(run)X +3194(queue\))X +3458(from)X +3654(this)X +3807(poten-)X +776 2032(tial)N +912(target)X +1135(host.)X +576 2172(\(3\))N +776(If)X +856(this)X +1006(quantity)X +1318(is)X +1399(less)X +1553(than)X +1727(a)X +1788(prespeci\256ed)X +2235(threshold,)X +2607(select)X +2830(this)X +2980(host.)X +576 2312(\(4\))N +776(Otherwise,)X +1182(repeat)X +1420(the)X +1551(process.)X +1859(If)X +1940(no)X +2051(host)X +2221(has)X +2361(a)X +2423(load)X +2598(factor)X +2827(below)X +3066(the)X +3198(threshold,)X +3572(the)X +3704(host)X +3875(with)X +776 2424(the)N +906(lowest)X +1158(load)X +1332(is)X +1413(the)X +1543(selected)X +1849(target.)X +576 2676(Once)N +785(the)X +917(target)X +1142(host)X +1313(is)X +1396(identi\256ed,)X +1776(the)X +1908(local)X +2 f +2104(pvmd)X +1 f +2318(sends)X +2537(the)X +2669(initiate)X +2940(request)X +3218(to)X +3311(the)X +2 f +3443(pvmd)X +1 f +3657(process)X +3944(on)X +576 2788(the)N +712(remote)X +985(host,)X +1182(where)X +1424(the)X +1560(application)X +1981(component)X +2401(is)X +2488(initiated.)X +2829(The)X +2993(remote)X +2 f +3265(pvmd)X +1 f +3482(then)X +3661(broadcasts)X +576 2900(noti\256cation)N +1009(of)X +1112(this)X +1270(event)X +1491(to)X +1590(all)X +1709(processors,)X +2131(simultaneously)X +2696(claiming)X +3037(an)X +3151(instance)X +3471(number)X +3771(for)X +3904(this)X +576 3012 0.3681(initiation)AN +949(\(by)X +1118(simply)X +1411(incrementing)X +1929(the)X +2089(last)X +2263(previous)X +2617(instance)X +2957(number)X +3277(for)X +3430(the)X +3589(component\).)X +576 3124(Con\257icting)N +1008(claims)X +1273(for)X +1409(the)X +1551(same)X +1766(instance)X +2089(number)X +2392(are)X +2533(again)X +2758(resolved)X +3090(as)X +3197(in)X +3300(the)X +3442(case)X +3628(of)X +3736(multiple)X +576 3236(claims)N +837(to)X +936(a)X +1005(lock,)X +1209(with)X +1395(a)X +1463("losing")X +1780(processor)X +2145(using)X +2365(a)X +2433(higher)X +2687(value.)X +2929(Once)X +3143(again,)X +3385(consistent)X +3767(con\257ict)X +576 3348(resolution)N +958(is)X +1046(con\256rmed)X +1432(by)X +1549(an)X +1661(exchange)X +2022(of)X +2124(messages)X +2485(between)X +2807(all)X +2925(claimants)X +3293(and)X +3449(reset)X +3645(actions)X +3925(are)X +576 3460(performed)N +985(in)X +1097(the)X +1248(case)X +1442(of)X +1558(disagreement.)X +2115(Application)X +2575(process)X +2880(termination)X +3330(information)X +3789(is)X +3890(also)X +576 3572(broadcast)N +937(to)X +1030(all)X +2 f +1143(pvmd)X +1 f +1357(processes.)X +1739(Conditional)X +2181(variants)X +2484(of)X +3 f +2581(initiate)X +1 f +2870(are)X +3001(saved)X +3225(by)X +3338(the)X +3471(local)X +2 f +3668(pvmd)X +1 f +3858(,)X +3905(and)X +576 3684(this)N +726(queue)X +958(is)X +1039(inspected)X +1394(and)X +1543(appropriate)X +1966(action)X +2204(taken)X +2417(when)X +2629(the)X +2759(particular)X +3119(event)X +3332(occurs.)X +3 f +576 4020(3.6.)N +752(Shared)X +1043(Memory)X +1387(and)X +1551(Barriers)X +1 f +776 4272(In)N +872(the)X +3 f +9 s +999(PVM)X +1 f +11 s +1187(system,)X +1478(shared)X +1731(memory)X +2049(is)X +2132(emulated)X +2480(by)X +2592(\256rst)X +2753(creating)X +3061(an)X +3168(image)X +3408(of)X +3505(a)X +3568(memory)X +3886(seg-)X +576 4384(ment)N +780(on)X +895(secondary)X +1278(storage.)X +1581(A)X +1671(\256le)X +1811(of)X +1911(the)X +2046(requested)X +2410(size)X +2574(is)X +2660(created;)X +2966(for)X +3094(ef\256ciency)X +3467(and)X +3620(failure)X +3876(resi-)X +576 4496(liency)N +815(reasons,)X +1123(the)X +1254(local)X +2 f +1449(pvmd)X +1 f +1662(\(the)X +1823(processor)X +2183(at)X +2271(which)X +2510(the)X +2642(creation)X +2950(request)X +3228(originated\))X +3639(attempts)X +3963(to)X +576 4608(locate)N +811(the)X +943(\256le)X +1080(on)X +1192(a)X +1255(device)X +1509(that)X +1666(is)X +1749(accessible)X +2130(to)X +2223(other)X +2428(processors)X +2822(via)X +2954(a)X +3017(network)X +3329(\256le)X +3465(system.)X +3777(Mutual)X +576 4720(exclusion,)N +958(both)X +1137(for)X +1261(creation)X +1567(as)X +1662(well)X +1836(as)X +1932(for)X +2057(access,)X +2326(is)X +2408(achieved)X +2744(as)X +2840(described)X +3200(earlier.)X +3470(A)X +2 f +3556(pvmd)X +1 f +3769(process)X +576 4832(that)N +732(has)X +872(acquired)X +1198(a)X +1259(lock)X +1433(\(on)X +1572(behalf)X +1814(of)X +1909(a)X +1970(local)X +2164(application)X +2579(process\))X +2893(copies)X +3140(the)X +3270(\256le)X +3405(into)X +3565(the)X +3695(requested)X +576 4944(address)N +864(space;)X +1109(this)X +1262(is)X +1346(done)X +1542(directly)X +1838(if)X +1918(the)X +2052(\256le)X +2191(is)X +2276(accessible)X +2659(directly,)X +2977(and)X +3130(with)X +3313(the)X +3447(assistance)X +3825(of)X +3924(the)X +576 5056(remote)N +2 f +846(pvmd)X +1 f +1061(if)X +1140(it)X +1215(is)X +1299(not.)X +1459(A)X +1547(user)X +1718(release)X +1987(request)X +2266(results)X +2521(in)X +2615(the)X +2748(speci\256ed)X +3086(memory)X +3405(area)X +3576(being)X +3797(copied)X +576 5168(back)N +766(to)X +859(the)X +991(\256le)X +1128(unless)X +1372(the)X +1504(lock)X +1680(request)X +1958(was)X +2118(for)X +2245(read-only)X +2607(access.)X +2900(It)X +2979(should)X +3239(be)X +3347(noted)X +3568(that)X +3726(creation,)X +576 5280(locking,)N +888(unlocking,)X +1288(and)X +1440(deallocation)X +1897(\(resulting)X +2260(in)X +2354(\256le)X +2492(removal\))X +2835(events)X +3085(are)X +3216(broadcast)X +3577(to)X +3670(all)X +2 f +3783(pvmd)X +1 f +3973(s;)X +576 5392(given)N +803(the)X +942(con\257ict)X +1238(resolution)X +1622(rules)X +1824(and)X +1982(highest)X +2268(priority)X +2564(to)X +2664(incoming)X +3029(requests,)X +3370(undesirable)X +3807(incon-)X +576 5504(sistencies)N +936(are)X +1065(avoided.)X + +16 p +%%Page: 16 16 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(16)X +2370(-)X +776 688(Barrier)N +1047(synchronization)X +1632(in)X +3 f +9 s +1719(PVM)X +1 f +11 s +1905(is)X +1986(accomplished)X +2493(by)X +2604(using)X +2818(an)X +2924(ef\256cient)X +3236(algorithm)X +3603(described)X +3963(in)X +576 800([20].)N +770(The)X +932(algorithm)X +1301(considers)X +1658(the)X +2 f +1791(pvmd)X +1 f +2006(processes)X +2367(as)X +2465(being)X +2686(the)X +2819(vertices)X +3118(in)X +3212(a)X +3276(logical)X +3542(quadratic)X +3895(net-)X +576 912(work.)N +803(In)X +901(such)X +1087(a)X +1151(network)X +1464(each)X +1650(vertex)X +2 f +1895(i)X +1 f +1945(has)X +2087(outgoing)X +2426(links)X +2623(to)X +2 f +2725(j)X +1 f +2776(such)X +2963(that)X +2 f +3129(j)X +1 f +2 f +9 f +3183(=)X +1 f +2 f +3253(i)X +1 f +2 f +9 f +3307(+)X +1 f +3377(2)X +2 f +8 s +877(r)Y +1 f +11 s +2 f +3475 912(modN)N +1 f +3685(,)X +3733(where)X +2 f +3973(N)X +1 f +576 1024(is)N +660(the)X +793(number)X +1087(of)X +2 f +1185(pvmd)X +1 f +1399(processes,)X +1781(and)X +1932(0)X +9 f +1998(\243)X +2 f +2068(r)X +1 f +2 f +2131(<)X +1 f +2212(log)X +8 s +2325 1041(2)N +11 s +2 f +2386 1024(N)N +1 f +2445(.)X +2491(Upon)X +2710(receipt)X +2974(of)X +3071(a)X +3 f +3134(barrier)X +1 f +3432(request)X +3710(from)X +3905(one)X +576 1136(of)N +673(the)X +806(local)X +1003(application)X +1421(processes,)X +1804(each)X +2 f +1990(pvmd)X +1 f +2205(process)X +2 f +2493(i)X +1 f +2543(\256rst)X +2705(waits)X +2916(until)X +3104(all)X +3218(local)X +3415(components)X +3866(have)X +576 1248(also)N +740(reached)X +1035(the)X +1165(barrier,)X +1443(and)X +1592(then)X +1766(executes)X +2091(the)X +2221(following)X +2586(algorithm:)X +796 1388(for)N +2 f +920(r)X +1 f +976(:=)X +1073(0)X +1139(to)X +1230(log)X +8 s +1343 1405(2)N +11 s +2 f +1404 1388(N)N +1 f +2 f +9 f +1492(-)X +1 f +1562(1)X +1628(do)X +928 1500(send)N +1111(message)X +1431(containing)X +2 f +1826(r)X +1 f +1882(to)X +2 f +1973(i)X +1 f +2 f +9 f +2027(+)X +1 f +2097(2)X +2 f +8 s +1465(r)Y +1 f +11 s +2 f +2195 1500(mod)N +1 f +2 f +2375(N)X +1 f +928 1612(wait)N +1102(for)X +1226(receipt)X +1488(of)X +1583(message)X +1903(containing)X +2 f +2298(r)X +1 f +576 1864(This)N +762(algorithm)X +1135(is)X +1223(ef\256cient)X +1541(both)X +1727(in)X +1825(the)X +1962(number)X +2261(of)X +2364(messages)X +2726(used)X +2917(and)X +3074(the)X +3212(number)X +3511(of)X +3614(rounds,)X +3905(and)X +576 1976(may)N +750(be)X +855(used)X +1038(for)X +1162(arbitrary)X +1487(values)X +1734(of)X +2 f +1829(N)X +1 f +1888(.)X +3 f +576 2312(3.7.)N +752(Discussion)X +1 f +776 2564(An)N +914(overview)X +1272(of)X +1376(the)X +1515(design)X +1776(and)X +1934 0.2885(implementation)AX +2521(strategies)X +2885(used)X +3077(to)X +3177(realize)X +3443(the)X +3582(various)X +3 f +9 s +3868(PVM)X +1 f +11 s +576 2676(features)N +885(has)X +1033(been)X +1230(presented)X +1598(in)X +1698(this)X +1857(section.)X +2160(As)X +2287(is)X +2376(common)X +2715(with)X +2902(most)X +3104(software)X +3436(systems,)X +3767(there)X +3973(is)X +576 2788(sometimes)N +980(a)X +1045(tradeoff)X +1349(between)X +1669(versatility)X +2050(and)X +2204(ef\256ciency.)X +2600(In)X +3 f +9 s +2696(PVM)X +1 f +11 s +2860(,)X +2909(the)X +3044(shared)X +3300(memory)X +3621(facility)X +3899(that)X +576 2900(is)N +664(emulated)X +1017(on)X +1134(a)X +1202(network)X +1519(is)X +1607(likely)X +1837(to)X +1934(be)X +2045(the)X +2181(cause)X +2404(of)X +2505(performance)X +2977(degradation)X +3421(if)X +3503(used)X +3692(unwisely.)X +576 3012(However,)N +948(as)X +1050(has)X +1196(been)X +1391(pointed)X +1685(out,)X +1849(when)X +2068(the)X +2205(grainsize)X +2552(of)X +2654(sharing)X +2943(memory)X +3267(across)X +3516(the)X +3654(distributed)X +576 3124(environment)N +1058(is)X +1152(relatively)X +1521(large,)X +1754(acceptable)X +2161(ef\256ciency)X +2543(levels)X +2784(may)X +2971(be)X +3089(obtained;)X +3453(and)X +3615(the)X +3758(bene\256ts)X +576 3236(obtained)N +920(by)X +1048(the)X +1196(shared)X +1466(memory)X +1801(abstraction)X +2229(outweighs)X +2632(the)X +2781(small)X +3014(performance)X +3499(degradation.)X +3978(It)X +576 3348(should)N +839(be)X +950(noted)X +1174(that)X +1335(mutual)X +1608(exclusion)X +1973(and)X +2127(barrier)X +2388(synchronization)X +2978(are)X +3112(implemented)X +3601(independent)X +576 3460(of)N +679(the)X +817(shared)X +1076(memory)X +1400(mechanism)X +1832(and)X +1990(use)X +2138(algorithms)X +2547(that)X +2711(are)X +2849(known)X +3119(to)X +3219(be)X +3333(ef\256cient)X +3653(for)X +3786(tens)X +3959(of)X +576 3572(processors)N +968(on)X +1078(local)X +1272(networks.)X +3 f +576 3908(4.)N +686(Preliminary)X +1164(Results)X +1 f +776 4160(To)N +910(facilitate)X +1256(its)X +1376(use)X +1529(and)X +1692(to)X +1797(determine)X +2186(its)X +2306(effectiveness,)X +2823(the)X +3 f +9 s +2963(PVM)X +1 f +11 s +3163(system)X +3444(has)X +3598(been)X +3801(imple-)X +576 4272(mented)N +865(on)X +982(a)X +1050(variety)X +1324(of)X +1426(machines)X +1788(including)X +2151(Sun)X +2316(3/50,)X +2523(3/60)X +2708(and)X +2863(SparcStation1)X +3386(workstations,)X +3886(Vax)X +576 4384(11/785)N +854(and)X +1014(Sun)X +1184(4/280)X +1418(servers,)X +1721(a)X +1793(64)X +1914(node)X +2119(Intel)X +2315(iPSC/2)X +2600(hypercube,)X +3022(and)X +3183(a)X +3256(12)X +3378(processor)X +3748(Sequent)X +576 4496(shared-memory)N +1157(multiprocessor.)X +1732(The)X +1898(minimal)X +2223(assumptions)X +2688(made)X +2908(regarding)X +3274(the)X +3411(underlying)X +3821(facili-)X +576 4608(ties)N +725(available)X +1070(greatly)X +1341(simpli\256ed)X +1721(the)X +1855 0.2885(implementation)AX +2437(efforts;)X +2717(the)X +2852(software)X +3181(could)X +3404(be)X +3514(ported)X +3766(\(from)X +3993(a)X +576 4720(base)N +773(Sun)X +951(3)X +1036 0.2455(implementation\))AX +1662(to)X +1772(to)X +1881(all)X +2010(the)X +2158(environments)X +2678(with)X +2875(changes)X +3198(necessary)X +3579(only)X +3776(in)X +3885(data)X +576 4832(representation)N +1105(and)X +1262(conversion)X +1678 0.3403(utilities.)AX +1997(In)X +2101(the)X +2240 0.2679(implementation,)AX +2849(the)X +2 f +2988(pvmd)X +1 f +3209(processes)X +3576(run)X +3724(indepen-)X +576 4944(dently,)N +844(while)X +1065(the)X +1198(user)X +1369(level)X +1566(routines)X +1875(are)X +2007(supplied)X +2331(as)X +2429(a)X +2493(set)X +2616(of)X +2714(libraries)X +3028(to)X +3122(be)X +3229(linked)X +3474(in)X +3567(with)X +3748(applica-)X +576 5056(tion)N +739(components.)X +1235(This)X +1418(section)X +1694(reports)X +1964(on)X +2078(observed)X +2421(performance)X +2891(\256gures)X +3156(for)X +3284(the)X +3418(basic)X +3 f +9 s +3621(PVM)X +1 f +11 s +3811(primi-)X +576 5168(tives)N +772(and)X +928(two)X +1089(straightforward)X +1660(applications;)X +2141(in)X +2239(the)X +2376(next)X +2556(section,)X +2856(two)X +3016(other)X +3225(applications)X +3680(that)X +3841(make)X +576 5280(extensive)N +931(use)X +1070(of)X +1165(the)X +1295(heterogeneous)X +1825(facilities)X +2152(are)X +2281(described.)X + +17 p +%%Page: 17 17 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(17)X +2370(-)X +3 f +576 688(4.1.)N +752(Basic)X +975(Primitives)X +1 f +776 940(The)N +945(ef\256ciency)X +1324(of)X +1429(user-level)X +1808(data)X +1987(transfer)X +2287(is)X +2378(perhaps)X +2683(the)X +2823(most)X +3027(critical)X +3305(aspect)X +3557(of)X +3662(any)X +3821(distri-)X +576 1052(buted)N +804(computing)X +1214(environment.)X +1714(In)X +1819(the)X +3 f +9 s +1955(PVM)X +1 f +11 s +2150(system,)X +2448(low)X +2611(latency)X +2897(data)X +3075(transfer)X +3374(has)X +3522(been)X +3719(provided)X +576 1164(without)N +877(sacri\256cing)X +1276(location)X +1593(transparency,)X +2096(and)X +2255(a)X +2326(datagram)X +2686(protocol)X +3012(is)X +3103(used)X +3296(so)X +3406(that)X +3571(overheads)X +3959(of)X +576 1276(more)N +791(heavyweight)X +1275(protocols)X +1636(are)X +1776(avoided.)X +2110(It)X +2197(is)X +2289(anticipated)X +2710(that)X +2876(a)X +2948(large)X +3157(proportion)X +3562(of)X +3668(the)X +3809(use)X +3959(of)X +3 f +9 s +576 1388(PVM)N +1 f +11 s +764(will)X +926(be)X +1033(constrained)X +1463(to)X +1557(local)X +1754(networks,)X +2123(with)X +2305(only)X +2487(a)X +2551(few)X +2707(applications)X +3159(wishing)X +3463(to)X +3557(execute)X +3851(com-)X +576 1500(ponents)N +873(on)X +984(geographically)X +1531(distant)X +1790(hosts.)X +2016(The)X +2176(protocols)X +2527(used)X +2711(by)X +3 f +9 s +2818(PVM)X +1 f +11 s +3004(therefore)X +3343(incur)X +3546(the)X +3676(overheads)X +576 1612(of)N +679(retransmission)X +1223(and)X +1380(sequencing)X +1806(only)X +1993(when)X +2213(the)X +2352(underlying)X +2765(network)X +3084(quality)X +3361(is)X +3451(poor;)X +3668(more)X +3880(than)X +576 1724(95%)N +766(of)X +868(local)X +1069(network)X +1386(communications)X +1999(typically)X +2337(succeed)X +2643(on)X +2759(the)X +2895(\256rst)X +3060(attempt.)X +3376(Table)X +3605(1)X +3677(shows)X +3924(the)X +576 1836(message)N +897(delivery)X +1209(times)X +1424(for)X +1549(varying)X +1841(message)X +2162(sizes)X +2356(under)X +3 f +9 s +2575(PVM)X +1 f +11 s +2763(between)X +3080(two)X +3236(Sun)X +3397(3/50)X +3578(systems)X +3881(on)X +3993(a)X +576 1948(10)N +695(MB/s)X +922(Ethernet.)X +1273(It)X +1357(should)X +1622(be)X +1735(noted)X +1961(that)X +2124(these)X +2335(\256gures)X +2604(represent)X +2956(elapsed)X +3250(time)X +3438(from)X +3639(the)X +3777(start)X +3959(of)X +576 2060(message)N +906(transmission)X +1384(to)X +1486(the)X +1627(receipt)X +1900(of)X +2006(positive)X +2319(acknowledgment)X +2954(and)X +3114(are)X +3254(averages)X +3594(over)X +3783(several)X +576 2172(runs)N +749(performed)X +1137(under)X +1359(varying)X +1650(host)X +1819(and)X +1968(network)X +2278(loads.)X +10 f +1022 2364(i)N +1034(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1066 2476(Message)N +1395(size)X +1554(\(bytes\))X +2033(8)X +2334(128)X +2679(256)X +3024(512)X +3347(1024)X +10 f +1022 2492(i)N +1034(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1022 2508(i)N +1034(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1066 2612(First)N +1250(instance)X +1949(15)X +2059(ms)X +2294(18)X +2404(ms)X +2639(22)X +2749(ms)X +2984(25)X +3094(ms)X +3329(30)X +3439(ms)X +10 f +1022 2636(i)N +1034(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1066 2748(Subsequent)N +1494(instances)X +1971(6)X +2037(ms)X +2316(8)X +2382(ms)X +2639(10)X +2749(ms)X +2984(12)X +3094(ms)X +3329(15)X +3439(ms)X +10 f +1022 2772(i)N +1034(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1022(c)X +2716(c)Y +2628(c)Y +2540(c)Y +2452(c)Y +1883 2772(c)N +2716(c)Y +2628(c)Y +2540(c)Y +2452(c)Y +2228 2772(c)N +2716(c)Y +2628(c)Y +2540(c)Y +2452(c)Y +2573 2772(c)N +2716(c)Y +2628(c)Y +2540(c)Y +2452(c)Y +2918 2772(c)N +2716(c)Y +2628(c)Y +2540(c)Y +2452(c)Y +3263 2772(c)N +2716(c)Y +2628(c)Y +2540(c)Y +2452(c)Y +3586 2772(c)N +2716(c)Y +2628(c)Y +2540(c)Y +2452(c)Y +1 f +1436 2932(Table)N +1659(1)X +1725(:)X +1772(User)X +1959(process)X +2244(data)X +2413(transfer)X +2703(times)X +2917(in)X +3 f +9 s +3008(PVM)X +1 f +11 s +576 3184(Broadcast,)N +976(since)X +1183(it)X +1259(is)X +1344(used)X +1531(heavily)X +1817(within)X +3 f +9 s +2065(PVM)X +1 f +11 s +2229(,)X +2277(is)X +2363(another)X +2654(important)X +3025(factor)X +3257(in)X +3353(the)X +3488(performance)X +3959(of)X +576 3296(the)N +708(system.)X +999(It)X +1077(was)X +1237(observed)X +1578(that)X +1734(for)X +1859(broadcast)X +2219(among)X +2 f +2482(pvmd)X +1 f +2695(processes,)X +3076(the)X +3207(calculated)X +3588(performance)X +576 3408(of)N +679(the)X +817(recursive)X +1169(doubling)X +1513(algorithm)X +1887(is)X +1976(consistent)X +2359(with)X +2546(actual)X +2788(behavior.)X +3171(Acknowledged)X +3734(message)X +576 3520(transmission)N +1057(on)X +1180(a)X +1254(single)X +1500(branch)X +1774(of)X +1882(the)X +2024(broadcast)X +2395(spanning)X +2747(tree)X +2913(required)X +3240(between)X +3567(4)X +3645(and)X +3806(9)X +3884(mil-)X +576 3632(liseconds)N +929(for)X +1056(a)X +1120(\(typical\))X +1444(100-byte)X +1782(message,)X +2128(depending)X +2521(upon)X +2723(the)X +2857(speed)X +3083(and)X +3236(load)X +3414(on)X +3528(the)X +3662(processors)X +576 3744(involved.)N +969(This)X +1166(translated)X +1549(to)X +1658(measured)X +2034(\256gures)X +2312(of)X +2424(15,)X +2573(28,)X +2722(35,)X +2871(and)X +3037(50)X +3164(milliseconds)X +3650(for)X +3791(typical)X +576 3856(broadcasts)N +979(to)X +1080(3,)X +1178(7,)X +1276(15,)X +1418(and)X +1577(31)X +1697(hosts)X +1910(respectively.)X +2412(For)X +2566(user)X +2744(process)X +3039(broadcasts,)X +3464(the)X +3604(\256gures)X +3876(vary)X +576 3968(widely,)N +866(owing)X +1114(to)X +1211(the)X +1347(fact)X +1507(that)X +2 f +1668(pvmd)X +1 f +1885(processes)X +2248(deliver)X +2520(broadcasts)X +2918(sequentially)X +3372(to)X +3468(local)X +3667(recipients.)X +576 4080(Thus,)N +799(if)X +878(a)X +942(large)X +1143(percentage)X +1549(of)X +1648(the)X +1782(user)X +1954(process)X +2243(broadcast)X +2606(group)X +2837(were)X +3033(physically)X +3422(executing)X +3791(on)X +3905(one)X +576 4192(host,)N +773(the)X +909(sequential)X +1295(delivery)X +1612(time)X +1798(for)X +1928(that)X +2089(host)X +2264(would)X +2512(dominate)X +2869(the)X +3004(total)X +3189(broadcast)X +3553(time.)X +3760(Table)X +3988(2)X +576 4304(shows)N +835(typical)X +1116(time)X +1314(requirements)X +1814(for)X +1956(user)X +2142(broadcast,)X +2541(under)X +2781(the)X +2929(assumption)X +3372(that)X +3546(the)X +3695(broadcast)X +576 4416(groups)N +837(are)X +966(evenly)X +1223(distributed)X +1623(among)X +1885(participating)X +2354(hosts.)X +776 4808(For)N +926(access)X +1179(to)X +1277(shared)X +1535(memory)X +1858(segments,)X +3 f +9 s +2233(PVM)X +1 f +11 s +2426(performance)X +2899(was)X +3064(good,)X +3291(although)X +3629(the)X +3766(timings)X +576 4920(varied)N +823(signi\256cantly,)X +1309(depending)X +1703(upon)X +1906(the)X +2041(number)X +2337(of)X +2437(active)X +2 f +2675(pvmd)X +1 f +2891(processes)X +3253(as)X +3352(well)X +3530(as)X +3629(the)X +3763(number)X +576 5032(of)N +681(con\257icting)X +1091(requests.)X +1433(It)X +1519(was)X +1687(empirically)X +2122(determined)X +2551(that)X +2716(the)X +2856(average)X +3161(time)X +3351(to)X +3452(access)X +3708(emulated)X +576 5144(shared)N +827(memory)X +1143(could)X +1361(be)X +1466(expressed)X +1834(as)X +2 f +796 5368(Time)N +8 s +5385(ms)Y +1 f +11 s +2 f +9 f +1072 5368(=)N +1 f +1142(12)X +2 f +9 f +1252(\264)X +1 f +2 f +1322(#)X +1 f +2 f +1395(of)X +1 f +2 f +1493(pvmd)X +1 f +2 f +1712(processes)X +1 f +2 f +9 f +2082(+)X +1 f +2152(0.04)X +2 f +9 f +2328(\264)X +1 f +2 f +2398(segment_size)X +8 s +2862 5385(bytes)N +1 f +11 s +576 5620(for)N +705(shared)X +961(memory)X +1282(segments)X +1637(of)X +1737(size)X +1901(256)X +2060(bytes)X +2274(and)X +2429(larger.)X +2684(the)X +2820(\256rst)X +2985(term)X +3175(in)X +3272(the)X +3408(expression)X +3812(is)X +3899(that)X +576 5732(required)N +894(for)X +1021(locking)X +1311(the)X +1444(segment,)X +1785(this)X +1938(term)X +2125(is)X +2209(dominant)X +2568(and)X +2720(increases)X +3067(with)X +3249(the)X +3381(number)X +3674(of)X +3771(distinct)X +576 5844(participating)N +1048(processors.)X +1465(An)X +1597(alternative)X +1996(mutual)X +2268(exclusion)X +2632(algorithm)X +3002(that)X +3161(reduced)X +3465(the)X +3599(effect)X +3825(of)X +3924(the)X + +18 p +%%Page: 18 18 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(18)X +2370(-)X +10 f +890 656(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1007 768(No.)N +1158(of)X +1492(No.)X +1643(of)X +2422(Message)X +2751(size)X +2910(\(bytes\))X +934 880(processors)N +1436(processes)X +1988(8)X +2311(128)X +2700(256)X +3089(512)X +3456(1024)X +10 f +890 896(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +890 912(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1119 1016(4)N +1604(4)X +1904(18)X +2014(ms)X +2293(22)X +2403(ms)X +2682(26)X +2792(ms)X +3071(30)X +3181(ms)X +3460(35)X +3570(ms)X +10 f +890 1040(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1119 1152(4)N +1604(8)X +1904(21)X +2014(ms)X +2293(26)X +2403(ms)X +2682(30)X +2792(ms)X +3071(35)X +3181(ms)X +3460(41)X +3570(ms)X +10 f +890 1176(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1119 1288(8)N +1604(8)X +1904(39)X +2014(ms)X +2293(48)X +2403(ms)X +2682(60)X +2792(ms)X +3071(75)X +3181(ms)X +3460(90)X +3570(ms)X +10 f +890 1312(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1119 1424(8)N +1560(16)X +1904(47)X +2014(ms)X +2293(57)X +2403(ms)X +2682(70)X +2792(ms)X +3071(86)X +3181(ms)X +3416(105)X +3570(ms)X +10 f +890 1448(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1075 1560(16)N +1560(16)X +1904(65)X +2014(ms)X +2293(76)X +2403(ms)X +2682(91)X +2792(ms)X +3027(110)X +3181(ms)X +3416(130)X +3570(ms)X +10 f +890 1584(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1075 1696(16)N +1560(32)X +1904(95)X +2014(ms)X +2249(110)X +2403(ms)X +2638(125)X +2792(ms)X +3027(145)X +3181(ms)X +3416(180)X +3570(ms)X +10 f +890 1720(i)N +901(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +890(c)X +1712(c)Y +1624(c)Y +1536(c)Y +1448(c)Y +1360(c)Y +1272(c)Y +1184(c)Y +1096(c)Y +1008(c)Y +920(c)Y +832(c)Y +744(c)Y +1370 1720(c)N +1712(c)Y +1624(c)Y +1536(c)Y +1448(c)Y +1360(c)Y +1272(c)Y +1184(c)Y +1096(c)Y +1008(c)Y +920(c)Y +832(c)Y +744(c)Y +1838 1720(c)N +1712(c)Y +1624(c)Y +1536(c)Y +1448(c)Y +1360(c)Y +1272(c)Y +1184(c)Y +1096(c)Y +1008(c)Y +920(c)Y +832(c)Y +744(c)Y +2183 1720(c)N +1704(c)Y +1616(c)Y +1528(c)Y +1440(c)Y +1352(c)Y +1264(c)Y +1176(c)Y +1088(c)Y +1000(c)Y +2572 1720(c)N +1704(c)Y +1616(c)Y +1528(c)Y +1440(c)Y +1352(c)Y +1264(c)Y +1176(c)Y +1088(c)Y +1000(c)Y +2961 1720(c)N +1704(c)Y +1616(c)Y +1528(c)Y +1440(c)Y +1352(c)Y +1264(c)Y +1176(c)Y +1088(c)Y +1000(c)Y +3350 1720(c)N +1704(c)Y +1616(c)Y +1528(c)Y +1440(c)Y +1352(c)Y +1264(c)Y +1176(c)Y +1088(c)Y +1000(c)Y +3717 1720(c)N +1712(c)Y +1624(c)Y +1536(c)Y +1448(c)Y +1360(c)Y +1272(c)Y +1184(c)Y +1096(c)Y +1008(c)Y +920(c)Y +832(c)Y +744(c)Y +1 f +1449 1880(Table)N +1672(2)X +1738(:)X +1785(User)X +1972(process)X +2257(broadcast)X +2616(timings)X +2904(in)X +3 f +9 s +2995(PVM)X +1 f +11 s +576 2104(\256rst)N +739(term)X +927(by)X +1041(about)X +1263(40%)X +1450(is)X +1535(available)X +1880(and)X +2033(may)X +2211(be)X +2320(used,)X +2529(but)X +2668(the)X +2803(failure)X +3060(resilience)X +3425(properties)X +3804(of)X +3904(this)X +576 2216(protocol)N +892(are)X +1021(considered)X +1424(inadequate.)X +776 2468(Owing)N +1037(to)X +1129(the)X +1260(manner)X +1547(in)X +1639(which)X +1877(process)X +2163 0.3681(initiation)AX +2507(and)X +2657(mutual)X +2926(exclusion)X +3287(are)X +3417(implemented,)X +3924(the)X +576 2580(time)N +759(taken)X +975(for)X +1101(these)X +1306(operations)X +1697(are)X +1828(almost)X +2088(identical)X +2417(to)X +2510(that)X +2667(for)X +2793(100-byte)X +3130(broadcasts)X +3525(between)X +2 f +3842(pvmd)X +1 f +576 2692(processes.)N +978(For)X +1122(barrier)X +1378(synchronization,)X +1985(it)X +2057(was)X +2216(once)X +2405(again)X +2619(observed)X +2959(that)X +3115(the)X +3246(sequential)X +3627(handling)X +3959(of)X +576 2804(component)N +992(instances)X +1339(on)X +1451(a)X +1514(local)X +1710(processor)X +2069(could)X +2288(be)X +2394(dominant,)X +2773(if)X +2850(there)X +3049(were)X +3242(a)X +3304(large)X +3503(number)X +3795(of)X +3891(par-)X +576 2916(ticipants)N +912(on)X +1036(any)X +1199(one)X +1362(machine.)X +1720(To)X +1855(measure)X +2185(the)X +2330(performance)X +2811(of)X +2921(the)X +3066(barrier)X +3 f +9 s +3333(PVM)X +1 f +11 s +3534(primitive)X +3896(was)X +576 3028(tested)N +805(using)X +1019(a)X +1081(sample)X +1354(application)X +1770(that)X +1926(invoked)X +2232(the)X +3 f +2362(barrier)X +1 f +2658(construct)X +3003(twice)X +3216(consecutively,)X +3745(with)X +3924(the)X +576 3140(second)N +842(invocation)X +1237(being)X +1455(timed.)X +1701(Shown)X +1967(in)X +2058(Table)X +2281(3)X +2347(are)X +2476(the)X +2606(observed)X +2945(measurements.)X +10 f +1638 3332(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1755 3444(No.)N +1906(of)X +2240(No.)X +2391(of)X +2695(Time)X +1682 3556(processors)N +2184(processes)X +2652(\(msecs\))X +10 f +1638 3572(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1638 3588(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1867 3692(4)N +2352(4)X +2766(24)X +10 f +1638 3716(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1867 3828(4)N +2352(8)X +2766(58)X +10 f +1638 3852(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1867 3964(8)N +2352(8)X +2766(55)X +10 f +1638 3988(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1867 4100(8)N +2308(16)X +2722(120)X +10 f +1638 4124(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1823 4236(16)N +2308(16)X +2722(120)X +10 f +1638 4260(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1823 4372(16)N +2308(32)X +2722(270)X +10 f +1638 4396(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1823 4508(32)N +2308(32)X +2722(268)X +10 f +1638 4532(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1823 4644(32)N +2308(64)X +2722(605)X +10 f +1638 4668(i)N +1649(iiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1638(c)X +4652(c)Y +4564(c)Y +4476(c)Y +4388(c)Y +4300(c)Y +4212(c)Y +4124(c)Y +4036(c)Y +3948(c)Y +3860(c)Y +3772(c)Y +3684(c)Y +3596(c)Y +3508(c)Y +3420(c)Y +2118 4668(c)N +4652(c)Y +4564(c)Y +4476(c)Y +4388(c)Y +4300(c)Y +4212(c)Y +4124(c)Y +4036(c)Y +3948(c)Y +3860(c)Y +3772(c)Y +3684(c)Y +3596(c)Y +3508(c)Y +3420(c)Y +2586 4668(c)N +4652(c)Y +4564(c)Y +4476(c)Y +4388(c)Y +4300(c)Y +4212(c)Y +4124(c)Y +4036(c)Y +3948(c)Y +3860(c)Y +3772(c)Y +3684(c)Y +3596(c)Y +3508(c)Y +3420(c)Y +2969 4668(c)N +4652(c)Y +4564(c)Y +4476(c)Y +4388(c)Y +4300(c)Y +4212(c)Y +4124(c)Y +4036(c)Y +3948(c)Y +3860(c)Y +3772(c)Y +3684(c)Y +3596(c)Y +3508(c)Y +3420(c)Y +1 f +1436 4828(Table)N +1659(3)X +1725(:)X +1772(Barrier)X +2043(synchronization)X +2628(timings)X +2916(in)X +3 f +9 s +3007(PVM)X +11 s +576 5276(4.2.)N +752(Example)X +1107(Applications)X +1 f +776 5416(In)N +871(order)X +1078(to)X +1169(compare)X +1494(the)X +1624(relative)X +1912(performance)X +2379(of)X +2475(the)X +3 f +9 s +2602(PVM)X +1 f +11 s +2789(system)X +3057(to)X +3149(existing)X +3452(multiprocessors,)X +576 5528(two)N +733(existing)X +1038(parallel)X +1328(codes)X +1553(were)X +1748(ported)X +1998(to)X +2092(run)X +2234(on)X +2347(the)X +2480(system.)X +2772(These)X +3006(two)X +3162(applications)X +3613(were)X +3807(ported)X +576 5640(without)N +881(any)X +1043(changes)X +1361(to)X +1466(the)X +1610(algorithm)X +1990(itself,)X +2225(and)X +2388(were)X +2594(executed)X +2943(under)X +3 f +9 s +3175(PVM)X +1 f +11 s +3375(on)X +3499(a)X +3574(collection)X +3959(of)X +576 5752(homogeneous)N +1092(machines.)X +1474(The)X +1638(\256rst)X +1802(application)X +2222(was)X +2385(numerical)X +2764(integration)X +3173(using)X +3390(the)X +3524(rectangle)X +3873(rule.)X +576 5864(The)N +736(results)X +989(from)X +1184(this)X +1336(experiment)X +1757(were)X +1951(uninterestingly)X +2505(predictable;)X +2946(on)X +3 f +9 s +3054(PVM)X +1 f +11 s +3218(,)X +3264(scaling)X +3538(in)X +3631(the)X +3763(number)X + +19 p +%%Page: 19 19 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(19)X +2370(-)X +576 688(of)N +673(processors)X +1067(or)X +1164(the)X +1296(number)X +1589(of)X +1686(rectangles)X +2067(resulted)X +2370(in)X +2462(a)X +2524(linear)X +2748(performance)X +3215(increase.)X +3570(Furthermore,)X +576 800(the)N +709(performance)X +1178(ratio)X +1365(between)X +3 f +9 s +1679(PVM)X +1 f +11 s +1868(and)X +2020(the)X +2153(iPSC/2)X +2429(multiprocessor)X +2978(for)X +3105(this)X +3258(problem)X +3577(was)X +3738(constant)X +576 912(\320)N +689(and)X +840(consistent)X +1217(with)X +1398(the)X +1530(inherent)X +1843(processor)X +2203(speed)X +2427(differences.)X +2863(The)X +3024(second)X +3292(application)X +3709(is)X +3792(Chole-)X +576 1024(sky)N +724(matrix)X +981(factorization)X +1453([16])X +1625(\320)X +1739(an)X +1848(application)X +2267(that)X +2426(has)X +2569(a)X +2634(relatively)X +2994(high)X +3178(communication)X +3755(to)X +3851(com-)X +576 1136(putation)N +896(ratio.)X +1132(Table)X +1363(4)X +1437(shows)X +1686(the)X +1824(elapsed)X +2118(times)X +2340(for)X +2472(this)X +2630(problem)X +2954(run)X +3101(on)X +3219(a)X +3288(network)X +3606(of)X +3709(Sun)X +3875(3/50)X +576 1248(machines)N +952(for)X +1098(varying)X +1411(problem)X +1749(sizes.)X +1986(Shown)X +2274(in)X +2387(parentheses)X +2841(adjacent)X +3179(to)X +3292(each)X +3497(timing)X +3773(are)X +3924(the)X +576 1360(corresponding)N +1106(times)X +1325(for)X +1454(running)X +1755(the)X +1890(same)X +2098(program)X +2423(on)X +2538(an)X +2648(Intel)X +2837(iPSC/2)X +3115(hypercube.)X +3530(In)X +3629(this)X +3783(experi-)X +576 1472(ment,)N +808(no)X +929(attempt)X +1228(was)X +1397(made)X +1621(to)X +1723(place)X +1942(more)X +2156(than)X +2341(one)X +2501(component)X +2926(process)X +3223(on)X +3345(a)X +3418(host;)X +3624(however,)X +3982(it)X +576 1584(should)N +838(be)X +948(noted)X +1171(that)X +1331(each)X +1519(participating)X +1993(host)X +2167(was)X +2330(also)X +2499(being)X +2722(used)X +2910(simultaneously)X +3472(for)X +3601(general)X +3886(pur-)X +576 1696(pose)N +759(editing,)X +1049(compilation,)X +1516(and)X +1665(other)X +1868(normal)X +2140(workstation)X +2578(activities.)X +10 f +936 1888(i)N +944(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1053 2000(No.)N +1204(of)X +2005(Problem)X +2326(size)X +2485(\(Order)X +2740(of)X +2835(Matrix\))X +980 2112(processors)N +1610(100)X +2119(200)X +2661(500)X +3269(1000)X +10 f +936 2128(i)N +944(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +936 2144(i)N +944(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1165 2248(2)N +1526(6)X +1702(\(2\))X +2002(35)X +2222(\(30\))X +2500(260)X +2764(\(245\))X +3086(1950)X +3394(\(1923\))X +10 f +936 2272(i)N +944(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1165 2384(4)N +1526(7)X +1702(\(2\))X +2002(22)X +2222(\(16\))X +2500(130)X +2764(\(120\))X +3130(990)X +3438(\(970\))X +10 f +936 2408(i)N +944(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1165 2520(8)N +1526(9)X +1702(\(1.5\))X +2002(17)X +2266(\(9\))X +2544(75)X +2808(\(64\))X +3130(610)X +3438(\(490\))X +10 f +936 2544(i)N +944(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +1 f +1121 2656(16)N +1482(14)X +1702(\(1\))X +2002(12)X +2266(\(6\))X +2544(46)X +2808(\(34\))X +3130(342)X +3438(\(255\))X +10 f +936 2680(i)N +944(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)X +936(c)X +2592(c)Y +2504(c)Y +2416(c)Y +2328(c)Y +2240(c)Y +2152(c)Y +2064(c)Y +1976(c)Y +1416 2680(c)N +2592(c)Y +2504(c)Y +2416(c)Y +2328(c)Y +2240(c)Y +2152(c)Y +2064(c)Y +1976(c)Y +1936 2680(c)N +2672(c)Y +2584(c)Y +2496(c)Y +2408(c)Y +2320(c)Y +2232(c)Y +2434 2680(c)N +2672(c)Y +2584(c)Y +2496(c)Y +2408(c)Y +2320(c)Y +2232(c)Y +3020 2680(c)N +2672(c)Y +2584(c)Y +2496(c)Y +2408(c)Y +2320(c)Y +2232(c)Y +3672 2680(c)N +2592(c)Y +2504(c)Y +2416(c)Y +2328(c)Y +2240(c)Y +2152(c)Y +2064(c)Y +1976(c)Y +1 f +1327 2840(Table)N +1550(4)X +1616(:)X +1663(Times)X +1906(\(in)X +2026(seconds\))X +2355(for)X +2479(Cholesky)X +2834(factorization)X +776 3204(The)N +941(anomaly)X +1273(apparent)X +1605(in)X +1703(the)X +1840(\256rst)X +2006(column)X +2300(of)X +2402(Table)X +2632(4)X +2705(was)X +2870(traced)X +3114(down)X +3338(to)X +3436(the)X +3573(nature)X +3822(of)X +3924(the)X +576 3316(Cholesky)N +935(algorithm)X +1305(\320)X +1419(for)X +1547(a)X +1612(small)X +1830(matrix,)X +2109(the)X +2243(simultaneous)X +2735(broadcasts)X +3132(of)X +3230(every)X +3450(process's)X +3801(matrix)X +576 3428(column)N +877(to)X +983(a)X +1059(\(relatively\))X +1488(large)X +1701(number)X +2007(of)X +2117(processors)X +2524(resulted)X +2840(in)X +2946(a)X +3022(high)X +3216(percentage)X +3634(of)X +3744(dropped)X +576 3540(packets,)N +889(leading)X +1176(to)X +1272(retransmissions)X +1846(and)X +1999(elapsed)X +2289(timeouts.)X +2642(For)X +2790(larger)X +3021(problems)X +3375(however,)X +3725(it)X +3801(can)X +3949(be)X +576 3652(seen)N +760(that)X +921(the)X +1057(performance)X +1529(of)X +3 f +9 s +1626(PVM)X +1 f +11 s +1818(is)X +1905(acceptable)X +2305(at)X +2397(the)X +2533(least,)X +2745(considering)X +3184(that)X +3346(the)X +3483(application)X +3905(is)X +3993(a)X +576 3764(substantially)N +1051(communication)X +1629(oriented)X +1945(one)X +2099(and)X +2253(that)X +2413(general)X +2699(purpose)X +3004(machines)X +3364(on)X +3479(a)X +3545(local)X +3744(network)X +576 3876(were)N +775(used.)X +987(It)X +1070(should)X +1334(also)X +1505(be)X +1617(pointed)X +1911(out)X +2053(that)X +2215(these)X +2426(\256gures)X +2695(are)X +2832(2)X +2906(to)X +3005(4)X +3079(times)X +3301(better)X +3532(than)X +3714(those)X +3930(for)X +576 3988(other)N +787(distributed)X +1194(multiprocessor)X +1747(simulators)X +2144(such)X +2334(as)X +2436(dsim[5].)X +2783(Furthermore,)X +3274(the)X +3411(factorization)X +3886(pro-)X +576 4100(gram)N +794(was)X +967(built)X +1167(for)X +1307(performance)X +1789(measurement)X +2297(purposes)X +2647(and)X +2812(therefore)X +3167(internally)X +3544(generated)X +3924(the)X +576 4212(matrix)N +858(elements)X +1223(and)X +1401(did)X +1565(not)X +1729(output)X +2006(the)X +2165(factorized)X +2568(results.)X +2871(Given)X +3137(the)X +3295(usual)X +3531(dif\256culty)X +3905(and)X +576 4324(inef\256ciencies)N +1074(in)X +1172(I/O)X +1318(from)X +1518(within)X +1773(the)X +1910(nodes)X +2144(in)X +2242(a)X +2310(distributed)X +2717(memory)X +3040(machine,)X +3390(it)X +3469(is)X +3557(expected)X +3899(that)X +3 f +9 s +576 4436(PVM)N +1 f +11 s +785(will)X +968(compare)X +1316(much)X +1557(more)X +1783(favorably)X +2164(against)X +2458(hardware)X +2828(multiprocessors)X +3430(when)X +3664(signi\256cant)X +576 4548(amounts)N +897(of)X +992(I/O)X +1131(are)X +1260(performed.)X +3 f +576 4884(5.)N +686(Application)X +1149(Experiences)X +1 f +776 5136(The)N +3 f +9 s +937(PVM)X +1 f +11 s +1129(system)X +1402(has)X +1547(evolved)X +1854(and)X +2009(has)X +2154(been)X +2348(in)X +2445 0.3182(intermittent)AX +2887(use)X +3033(for)X +3164(the)X +3301(past)X +3472(several)X +3750(months,)X +576 5248(and)N +730(enhancements)X +1256(are)X +1390(still)X +1551(ongoing.)X +1889(Several)X +2180(application)X +2599(codes)X +2825(have)X +3017(been)X +3209(ported)X +3460(to)X +3555(run)X +3698(under)X +3924(the)X +3 f +9 s +576 5360(PVM)N +1 f +11 s +762(environment;)X +1255(in)X +1346(this)X +1496(section,)X +1790(two)X +1944(applications)X +2393(that)X +2549(make)X +2763(extensive)X +3119(use)X +3259(of)X +3355(the)X +3486(system)X +3754(features)X +576 5472(are)N +705(described.)X + +20 p +%%Page: 20 20 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(20)X +2370(-)X +3 f +576 688(5.1.)N +752(Block)X +990(Matrix)X +1276(Multiplication)X +1 f +776 940(Matrix)N +1046 0.3365(multiplication)AX +1574(is)X +1663(a)X +1732(compute)X +2066(intensive)X +2415(application)X +2838(that)X +3001(is)X +3091(amenable)X +3460(to)X +3560(parallel)X +3856(solu-)X +576 1052(tion.)N +767(On)X +905(shared)X +1165(memory)X +1489(multiprocessors,)X +2099(prescheduling)X +2623(algorithms)X +3031(work)X +3241(well)X +3423(and)X +3580(exhibit)X +3856(good)X +576 1164(speedup)N +901(characteristics)X +1442(with)X +1636(an)X +1756(increase)X +2081(in)X +2187(the)X +2332(number)X +2638(of)X +2748(processors.)X +3177(On)X +3322(distributed)X +3738(memory)X +576 1276(machines,)N +957(matrices)X +1282(are)X +1415(decomposed)X +1881(into)X +2045(subblocks)X +2423(and)X +2576 0.3875(multiplied;)AX +2992(and)X +3144(a)X +3208(regular)X +3482(communication)X +576 1388(pattern)N +855(between)X +1182(the)X +1324(processing)X +1734(elements)X +2082(helps)X +2302(minimize)X +2671(the)X +2814(overheads.)X +3227(A)X +3325(detailed)X +3640(description)X +576 1500(and)N +725(analysis)X +1031(of)X +1126(block)X +1344(matrix)X +1597 0.3365(multiplication)AX +2117(on)X +2227(hypercube)X +2615(architectures)X +3087(may)X +3261(be)X +3366(found)X +3593(in)X +3684([18].)X +776 1752(A)N +870(modi\256ed)X +1215(version)X +1505(of)X +1609(the)X +1748(block)X +1975(matrix)X +2237 0.3365(multiplication)AX +2766(algorithm)X +3142(was)X +3310(implemented)X +3804(on)X +3924(the)X +3 f +9 s +576 1864(PVM)N +1 f +11 s +768(system)X +1041(and)X +1196(executed)X +1537(on)X +1653(various)X +1940(hardware)X +2294(combinations.)X +2820(The)X +2985(modi\256cation)X +3460(was)X +3624(with)X +3808(regard)X +576 1976(to)N +672(subblock)X +1017(decomposition;)X +1590(when)X +1808(the)X +1944(individual)X +2331(processors)X +2729(differ)X +2952(widely)X +3220(in)X +3317(computing)X +3723(capabili-)X +576 2088(ties,)N +752(equal)X +974(sized)X +1186(subblocks)X +1569(lead)X +1746(to)X +1845(severe)X +2099(load)X +2281(imbalances)X +2708(and)X +2865(result)X +3091(in)X +3190(signi\256cant)X +3588(performance)X +576 2200(degradation.)N +1040(To)X +1164(overcome)X +1538(this,)X +1715(the)X +1850(matrices)X +2176(to)X +2272(be)X +2382 0.3681(multiplied)AX +2774(were)X +2971(viewed)X +3252(as)X +3352(being)X +3575(composed)X +3959(of)X +576 2312(small,)N +814(equal)X +1029(sized)X +1234(subblocks)X +1610(\320)X +1722(with)X +1903(individual)X +2286(processors)X +2680(taking)X +2924(responsibility)X +3428(for)X +2 f +3553(collections)X +1 f +3959(of)X +576 2424(subblocks)N +965(at)X +1066(a)X +1142(time,)X +1359(the)X +1504(size)X +1678(of)X +1789(the)X +1935(collections)X +2356(being)X +2590(determined)X +3025(by)X +3151(their)X +3351(relative)X +3654(computing)X +576 2536(power.)N +852(In)X +960(other)X +1176(words,)X +1447(the)X +1590(algorithm)X +1969(was)X +2140(expressed)X +2521(using)X +2747(the)X +2890("bag)X +3087(of)X +3194(tasks")X +3440(approach,)X +3818(where)X +576 2648(each)N +783(task)X +971(is)X +1076(individual)X +1481(subblock)X +1846 0.3125(multiplication.)AX +2413(However,)X +2803(each)X +3011(worker)X +3306(process)X +3616(extracts,)X +3959(or)X +576 2760(assumes)N +893(responsibility)X +1398(for,)X +1546(a)X +1609(number)X +1902(of)X +1999(tasks)X +2199(at)X +2287(a)X +2350(time)X +2531(to)X +2623(reduce)X +2880(synchronization)X +3466(and)X +3616(cooperation)X +576 2872(overheads.)N +576 3012 MXY +3672 +2966 +0.00 +0.00 +459.00 +370.80 +startFig +%! +%%%Creator: vss@mathsund (V.S.Sunderam,216 Fishburne,7275926,2974135) +%%%Title: fig7 (xpic) +%%%CreationDate: Fri Mar 23 13:10:10 1990 +%%%Pages: 1 +%%%BoundingBox: 0 0 459 370.8 +%% (in inches) at 0 0, width 6.375, height 5.15 +%%%EndComments +%% Prolog for xpic to PostScript converter +%% Author: Mark Moraes +%% $Header: x2ps.pro,v 1.2 88/03/19 16:50:09 moraes Exp +%% %d D - change style SOLID, DOTTED, SHORT-DASH, LONG-DASH, DOT-DASH +%% %s F - change font to fontname +%% %d S - change size (font size in points) +%% (%s) rj %d t - text right just. (%d is TOPLINE, MIDLINE, BOTLINE) +%% (%s) lj %d t - text left just. (%d is TOPLINE, MIDLINE, BOTLINE) +%% (%s) ce %d t - text centered (%d is TOPLINE, MIDLINE, BOTLINE) +%% %d %d l - lineto +%% %d %d m - moveto +%% %d %d s - spline segment +%% x - flush line, spline +%% b - box +%% e - ellipse +%% %d ss - setscale +%% %d W - change linewidth +%% getpagesize - gets the values of PAGEHEIGHT and PAGEWIDTH +%% %d %d flip - translate by %d, PAGEHEIGHT - %d (this +%% transforms to X windows coordinates) +save 50 dict begin /xpic exch def +/StartXpic {newpath 0 0 moveto [] 0 setdash 0 setgray 1 setlinecap} def +%% Set defaults +/fontname /Times-Roman def +/ptsize 12 def +%% halign has the values for MIDLINE, TOPLINE, BOTLINE +/halign 3 array def +/s {rcurveto} def +/x {stroke} def +/l {lineto} def +/m {moveto} def +/b { + /ury exch def /urx exch def /lly exch def /llx exch def + llx lly moveto urx lly lineto urx ury lineto + llx ury lineto llx lly lineto stroke +} def +/mtrx matrix def +/e { + /yc exch def /xc exch def /yrad exch def /xrad exch def + xc xrad add yc moveto + /savematrix mtrx currentmatrix def + xc yc translate + xrad yrad scale + 0 0 1 0 360 arc + savematrix setmatrix stroke +} def +%% The next three take the text string, and moveto the right horiz. position +%% leaving the string on the stack. +/lj {} def +/rj {dup stringwidth pop neg 0 rmoveto} def +/ce {dup stringwidth pop 2 div neg 0 rmoveto} def +%% And this is invoked after one of the three above, and +%% computes the vert. pos, and then displays the string. +/t {halign exch get 0 exch rmoveto show newpath} def +%% Store an array of patterns in /styles - a pattern is an array consisting +%% of an array and an offset. Corresp to xpic patterns +%% solid, dotted, short-dashed, long-dashed, dot-dashed +/styles [ [] 0 ] [ [1 3] 0 ] [ [4 4] 0 ] [ [8 4] 0 ] [ [1 4 4 4] 0 ] + 5 array astore def +%% change style to arg. +/D {stroke styles exch get aload pop setdash newpath} def +/W {stroke 0.5 mul setlinewidth newpath} def +%% fontbox takes a fontname off the stack, and returns an array +%% containing the values of the bottom line of the bounding box, the +%% mid line of the bounding box, and the top line of the bounding box +%% of that font, taken from the baseline, scaled to a font of size 1 +/fontbox { + findfont dup /FontMatrix get /fm exch def /FontBBox get aload pop + /ytop exch def pop /ybot exch def pop + /ymid ytop ybot sub 2 div def + 0 ybot fm dtransform exch pop % botline + dup neg exch % midline - this works better than (ytop-ybot)/2! + 0 ytop fm dtransform exch pop exch %topline + % now in the order midline, topline, botline. + 3 array astore +} def +%% select font +/F { + dup /fontname exch def fontbox + /thisfontbox exch def SF +} def +%% set point size +/S {/ptsize exch def SF} def +%% actually set font +/SF { + fontname findfont ptsize curscale div scalefont setfont + thisfontbox aload pop + 1 1 3 { + pop ptsize mul curscale div neg 3 1 roll + } for + halign astore pop +} def +%% sets the scale to 72 / n, where n is on the stack, and stores the value +%% in curscale for font scaling +/curscale 1 def +/getpagesize{newpath clippath pathbbox /pageheight exch def + /pagewidth exch def pop pop newpath} def +/flip{pageheight exch sub translate} def +/ss {/curscale exch 72 exch div dup dup scale def} def +/land {90 rotate} def +StartXpic +%%%EndProlog +80 ss +0.5 W +/Times-Roman F +10 S +92 27 m +(for result matrix subblock computations) ce 0 t +84 43 m +(-Heavy boxes show actual allocation) ce 0 t +76 59 m +(- Dashed grid shows decomposition) ce 0 t +324 43 m +(-) ce 0 t +420 43 m +(Bands in A and B are similarly identified) ce 0 t +388 59 m +(-Each Cn is a 64x512 "band") ce 0 t +2 D +76 195 m +396 195 l +x +76 235 m +396 235 l +x +76 275 m +396 275 l +x +76 355 m +396 355 l +x +76 315 m +396 315 l +x +84 155 m +404 155 l +x +2 W +0 D +76 395 156 315 b +156 315 316 155 b +0.5 W +76 395 396 75 b +2 D +116 395 m +116 75 l +x +156 75 m +156 395 l +x +196 395 m +196 75 l +x +236 395 m +236 75 l +x +276 387 m +276 75 l +x +316 387 m +316 75 l +x +76 115 m +396 115 l +x +2 W +0 D +316 155 396 75 b +156 355 316 315 b +156 395 316 355 b +76 155 316 75 b +316 395 396 155 b +0.5 W +236 243 m +(16-node hypercube) ce 0 t +116 363 m +(4 Sun 3/50) ce 0 t +188 123 m +(12-processor Sequent) ce 0 t +356 259 m +(Sequent) ce 0 t +356 123 m +(Sun 4/280) ce 0 t +236 371 m +(Sun 3/60 #1) ce 0 t +236 331 m +(Sun 3/60 #2) ce 0 t +156 43 m +(-) ce 0 t +76 403 m +(0) ce 0 t +68 395 m +(0) ce 0 t +60 75 m +(511) ce 0 t +396 403 m +(511) ce 0 t +/Times-Italic F +436 387 m +(Shared data ) ce 0 t +436 379 m +(structure C1) ce 0 t +420 331 m +(C2) ce 0 t +420 299 m +(C3) ce 0 t +420 251 m +(C4) ce 0 t +420 211 m +(C5) ce 0 t +420 179 m +(C6) ce 0 t +420 139 m +(C7) ce 0 t +100 403 m +(Ca) ce 0 t +140 403 m +(Cb) ce 0 t +180 403 m +(Cc) ce 0 t +220 403 m +(Cd) ce 0 t +260 403 m +(Ce) ce 0 t +292 403 m +(Cf) ce 0 t +332 403 m +(Cg) ce 0 t +372 403 m +(Ch) ce 0 t +420 99 m +(C8) ce 0 t +2 W +76 315 156 155 b +0.5 W +/Times-Roman F +116 243 m +(Vax) ce 0 t +12 S +252 3 m +(Figure 7: Asymteric decomposition for matrix multiplication) ce 0 t +2 D +356 387 m +356 75 l +x +%%%Trailer +showpage +%% Trailer for xpic to PostScript converter +%% $Header: x2ps.tra,v 1.1 88/08/31 23:48:01 moraes Exp $ +xpic end restore +endFig + +21 p +%%Page: 21 21 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(21)X +2370(-)X +776 688(Figure)N +1029(7)X +1096(shows)X +1338(an)X +1444(example)X +1766(scenario,)X +2104(where)X +2341(task)X +2506(partitioning)X +2941(is)X +3022(shown)X +3273(in)X +3364(terms)X +3582(of)X +3677(the)X +3807(result-)X +576 800(ing)N +715(matrix.)X +1017(It)X +1098(should)X +1360(be)X +1470(noted)X +1693(that)X +1853(the)X +1988(decomposition)X +2535(shown)X +2791(in)X +2887(the)X +3022(\256gure)X +3254(is)X +3340(not)X +3480(statically)X +3827(deter-)X +576 912(mined;)N +858(each)X +1055(processor)X +1427(computes)X +1801(one)X +1964(subblock)X +2317(aggregate,)X +2716(then)X +2903(obtains)X +3193(another,)X +3514(and)X +3676(so)X +3789(on.)X +3934(To)X +576 1024(implement)N +977(this)X +1127(on)X +3 f +9 s +1233(PVM)X +1 f +11 s +1397(,)X +1441(the)X +1571(following)X +1936(strategy)X +2237(was)X +2395(used:)X +576 1164(-)N +776(The)X +939(matrices)X +1264(to)X +1359(be)X +1468 0.3681(multiplied)AX +1859(\()X +2 f +1888(A)X +1 f +1968(and)X +2 f +2121(B)X +1 f +2175(\))X +2231(are)X +2365(maintained)X +2785(in)X +2881(emulated)X +3232(shared)X +3488(memory)X +3809(by)X +3924(the)X +776 1276("startup")N +1145(process,)X +1487(with)X +1701(each)X +1919(subblock)X +2294(row)X +2487(and)X +2671(column)X +2993(\(band\))X +3279(being)X +3532(independently)X +776 1388(identi\256able)N +1196(as)X +1291(shown)X +1542(in)X +1633(Figure)X +1885(7.)X +1973(The)X +2132(granularity)X +2541(of)X +2636(sharing)X +2917(is)X +2998(therefore)X +3337(large.)X +576 1528(-)N +776(System)X +1060(component)X +1476(programs)X +1832(are)X +1963(written)X +2237(to)X +2330(use)X +2471(the)X +2604(algorithm)X +2973(most)X +3170(appropriate)X +3596(for)X +3723(their)X +3910(tar-)X +776 1640(geted)N +1033(architecture,)X +1537(i.e.)X +1710(a)X +1814(square)X +2108(subblock)X +2491(component)X +2948(for)X +3115(the)X +3288(hypercube,)X +3741(a)X +3845(static)X +776 1752(prescheduled)N +1279(component)X +1710(for)X +1851(the)X +1998(Sequent)X +2321(shared)X +2589(memory)X +2922(multiprocessor,)X +3507(and)X +3674(sequential)X +776 1864(code)N +964(for)X +1088(the)X +1218(Sun)X +1377(workstations.)X +576 2004(-)N +776(A)X +861("working)X +1212(list")X +1379(shared)X +1630(data)X +1799(structure)X +2129(is)X +2210(set)X +2330(up,)X +2462(once)X +2650(again)X +2863(by)X +2973(the)X +3103("startup")X +3437(process.)X +3744(This)X +3923(list)X +776 2116(holds)N +991(the)X +1123(result)X +1343(matrix)X +1598(subblocks)X +1974(that)X +2130(have)X +2319(been)X +2508(computed)X +2879(or)X +2975(have)X +3164(been)X +3353(taken)X +3567(up)X +3678(by)X +3789(a)X +3851(com-)X +776 2228(ponent.)N +1065(For)X +1214(example,)X +1562(when)X +1779(all)X +1895(but)X +2035(the)X +2170(bottom)X +2448(right)X +2642(corner)X +2893(subblock)X +3238(of)X +2 f +3338(C)X +1 f +3424(\(Fig.)X +3620(7\))X +3721(has)X +3866(been)X +776 2340(computed)N +1146(the)X +1276(list)X +1407(might)X +1636(contain:)X +776 2480(+)N +976({0,127},{0,127})X +1584(:)X +1631(Indicating)X +2011(that)X +2167(the)X +2298(4-member)X +2683(group)X +2911(of)X +3007(Sun)X +3167(3/50's)X +3410(\(using)X +3 f +9 s +3649(PVM)X +1 f +11 s +3836(prim-)X +976 2592(itives)N +1205(to)X +1311(cooperate)X +1690(using)X +1918(message-passing\))X +2575(had)X +2739(taken)X +2966(responsibility)X +3483(for)X +3621(the)X +3765(top)X +3914(left)X +976 2704(corner)N +1222(subblock.)X +776 2844(+)N +976({128,383},{0,63})X +1628(:)X +1675(Taken)X +1917(\(and)X +2095(perhaps)X +2390(completed\))X +2809(by)X +2919(Sun)X +3078(3/60)X +3257(#1.)X +776 2984(+)N +976({128,383},{65,127})X +1716(:)X +1763(Taken)X +2005(by)X +2115(Sun)X +2274(3/60)X +2453(#2.)X +776 3124(+)N +976({384,511},{0,383})X +1672(:)X +1719(Taken)X +1961(by)X +2071(and)X +2220(completed)X +2610(by)X +2720(the)X +2850(Sequent.)X +776 3264(+)N +976({0,127},{128,383})X +1672(:)X +1719(Taken)X +1961(by)X +2071(Vax.)X +776 3404(+)N +976({0,383},{384,511})X +1672(:)X +1719(Taken)X +1961(by)X +2071(Sequent)X +2377(and)X +2526(perhaps)X +2821(being)X +3039(currently)X +3379(processed.)X +776 3516(The)N +942(last)X +1094(processor,)X +1481(upon)X +1686(inspecting)X +2078(this)X +2235(list,)X +2395(determines)X +2811(that)X +2973(it)X +3052(can)X +3203(compute)X +3536(the)X +3674(remaining)X +776 3628(subblock)N +1120(\({384,511},{384,511}\),)X +1988(and)X +2140(enters)X +2375(this)X +2528(pair)X +2690(in)X +2784(the)X +2917(list)X +3051(-)X +3105(thereby)X +3394(signaling)X +3743(comple-)X +776 3740(tion)N +936(to)X +1027(other)X +1230(processors.)X +576 3880(-)N +776(Having)X +1071(determined)X +1504(which)X +1755(subblock)X +2110(a)X +2186(component)X +2615(was)X +2788(going)X +3026(to)X +3132(compute,)X +3495(the)X +3640(component)X +776 3992(then)N +958(maps)X +1174(the)X +1312(appropriate)X +1743(segments)X +2101(of)X +2204(the)X +2 f +2341(A)X +1 f +2424(and)X +2 f +2580(B)X +1 f +2663(matrices)X +2991(into)X +3158(its)X +3271(local)X +3472(memory.)X +3817(Again)X +776 4104(using)N +998(\256gure)X +1234(7)X +1309(as)X +1413(an)X +1527(example,)X +1879(the)X +2019(component)X +2443(executing)X +2818(on)X +2938("Sun)X +3143(3/60)X +3332(#2")X +3488(would)X +3740(map)X +3924(the)X +776 4216(bands)N +1005(A2)X +1136(and)X +1287(Bb-Bf)X +1531(into)X +1693(its)X +1801(local)X +1997(memory,)X +2337(and)X +2488(using)X +2702(these,)X +2928(would)X +3171(compute)X +3498(the)X +3629(shown)X +3881(sub-)X +776 4328(block)N +998(of)X +1097(the)X +1232(matrix)X +2 f +1490(C)X +1 f +1549(.)X +1598(The)X +1762(Sequent)X +2073(\(in)X +2198(one)X +2352(case\))X +2559(would)X +2806(map)X +2985(bands)X +3217(A7-A8)X +3487(and)X +3641(Ba-Bf,)X +3905(and)X +776 4440(use)N +915(a)X +976(locally)X +1239(parallel)X +1526(program)X +1846(to)X +1937(compute)X +2263(the)X +2393(resulting)X +2724(matrix)X +2977(subblock.)X +776 4804(The)N +941(results)X +1199(of)X +1300(executing)X +1672(this)X +1829(asymmetric)X +2270(algorithm)X +2643(using)X +2863(multiple)X +3188(architectures)X +3667(are)X +3803(shown)X +576 4916(in)N +680(Table)X +916(5.)X +1017(Also)X +1218(shown)X +1482(are)X +1624(the)X +1766(timing)X +2032(\256gures)X +2305(for)X +2441 0.3375(multiplying)AX +2889(the)X +3031(same)X +3246(matrices)X +3579(using)X +3804("pure")X +576 5028(algorithms)N +978(on)X +1090(a)X +1153(hypercube)X +1543(and)X +1694(a)X +1757(shared)X +2010(memory)X +2328(machine.)X +2695(It)X +2773(can)X +2919(be)X +3026(seen)X +3207(from)X +3403(the)X +3536(\256gure)X +3766(that)X +3924(the)X +3 f +9 s +576 5140(PVM)N +1 f +11 s +776 0.2885(implementation)AX +1368(scales)X +1614(well,)X +1824(even)X +2026(for)X +2163(a)X +2237(heterogeneous)X +2780(collection)X +3164(of)X +3272(processors,)X +3699(when)X +3924(the)X +576 5252(matrices)N +899(are)X +1030(large.)X +1252(For)X +1398(smaller)X +1682(matrices)X +2005(however,)X +2353(the)X +2485(locking)X +2774(and)X +2925(emulated)X +3274(shared)X +3528(memory)X +3847(over-)X +576 5364(heads)N +803(actually)X +1110(cause)X +1332(an)X +2 f +1442(increase)X +1 f +1767(in)X +1862(execution)X +2231(times)X +2449(when)X +2665(more)X +2872(processors)X +3268(are)X +3401(added.)X +3681(Neverthe-)X +576 5476(less,)N +760(it)X +841(is)X +931(felt)X +1080(that)X +1244(such)X +1436(algorithms)X +1845(are)X +1983(valuable)X +2313(for)X +2446(two)X +2609(important)X +2984(reasons.)X +3300(First,)X +3515(when)X +3736(multiple)X +576 5588(processors)N +970(are)X +1101(available,)X +1466(the)X +1598(total)X +1780(computing)X +2182(power)X +2425(can)X +2571(be)X +2677(increased)X +3032(\320)X +3143(e.g.)X +3293(a)X +3355(16-node)X +3666(hypercube)X +576 5700(may)N +773(be)X +901(combined)X +1294(with)X +1496(other)X +1722(processors)X +2137(to)X +2251(emulate)X +2576(a)X +2660(32)X +2793(processor)X +3174(virtual)X +3450(machine)X +3794(that)X +3973(is)X +576 5812(bene\256cial)N +950(for)X +1083(large)X +1290(matrices.)X +1642(Second,)X +1954(the)X +2093(the)X +2232(support)X +2526(services)X +2839(that)X +3002(are)X +3139(available)X +3488(on)X +3606(the)X +3744(network)X + +22 p +%%Page: 22 22 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(22)X +2370(-)X +10 f +1327 656(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1 f +1448 768(Machine)N +1965(No.)X +2116(of)X +2322(Problem)X +2643(Size)X +2817(\(Order)X +3072(of)X +3167(Matrix\))X +1526 880(type)N +1971(procs.)X +2334(64)X +2580(128)X +2892(256)X +3248(512)X +10 f +1327 896(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1327 912(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1 f +1460 1016(Sequent)N +2055(4)X +2323(5.4)X +2569(40.5)X +2859(326.6)X +3193(2581.9)X +10 f +1327 1040(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1 f +1460 1152(Sequent)N +2055(8)X +2323(2.9)X +2569(20.9)X +2859(163.8)X +3193(1292.7)X +10 f +1327 1168(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1327 1184(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1 f +1476 1288(iPSC/2)N +2055(4)X +2323(1.5)X +2613(9.3)X +2903(81.5)X +3237(693.5)X +10 f +1327 1312(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1 f +1476 1424(iPSC/2)N +2033(16)X +2323(1.2)X +2613(3.1)X +2903(18.2)X +3237(191.7)X +10 f +1327 1440(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1327 1456(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1 f +1381 1560(PVM)N +1593(\(Suns\))X +2055(4)X +2323(1.8)X +2613(4.3)X +2903(26.5)X +3237(231.6)X +10 f +1327 1584(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1 f +1371 1696(PVM)N +1583(\(Suns+)X +1409 1808(Sequent-8\))N +2033(16)X +2323(2.8)X +2613(5.1)X +2903(20.3)X +3237(212.5)X +10 f +1327 1832(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1 f +1382 1944(PVM\(Suns+)N +1398 2056(Sequent-8+)N +2033(32)X +2323(3.5)X +2613(7.2)X +2903(16.6)X +3237(130.8)X +1403 2168(iPSC/2-16\))N +10 f +1327 2192(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii)N +1327(c)X +2152(c)Y +2064(c)Y +1976(c)Y +1888(c)Y +1800(c)Y +1712(c)Y +1624(c)Y +1536(c)Y +1448(c)Y +1360(c)Y +1272(c)Y +1184(c)Y +1096(c)Y +1008(c)Y +920(c)Y +832(c)Y +744(c)Y +1899 2192(c)N +2152(c)Y +2064(c)Y +1976(c)Y +1888(c)Y +1800(c)Y +1712(c)Y +1624(c)Y +1536(c)Y +1448(c)Y +1360(c)Y +1272(c)Y +1184(c)Y +1096(c)Y +1008(c)Y +920(c)Y +832(c)Y +744(c)Y +2255 2192(c)N +2152(c)Y +2064(c)Y +1976(c)Y +1888(c)Y +1800(c)Y +1712(c)Y +1624(c)Y +1536(c)Y +1448(c)Y +1360(c)Y +1272(c)Y +1184(c)Y +1096(c)Y +1008(c)Y +920(c)Y +832(c)Y +744(c)Y +2501 2192(c)N +2144(c)Y +2056(c)Y +1968(c)Y +1880(c)Y +1792(c)Y +1704(c)Y +1616(c)Y +1528(c)Y +1440(c)Y +1352(c)Y +1264(c)Y +1176(c)Y +1088(c)Y +1000(c)Y +2791 2192(c)N +2144(c)Y +2056(c)Y +1968(c)Y +1880(c)Y +1792(c)Y +1704(c)Y +1616(c)Y +1528(c)Y +1440(c)Y +1352(c)Y +1264(c)Y +1176(c)Y +1088(c)Y +1000(c)Y +3125 2192(c)N +2144(c)Y +2056(c)Y +1968(c)Y +1880(c)Y +1792(c)Y +1704(c)Y +1616(c)Y +1528(c)Y +1440(c)Y +1352(c)Y +1264(c)Y +1176(c)Y +1088(c)Y +1000(c)Y +3481 2192(c)N +2152(c)Y +2064(c)Y +1976(c)Y +1888(c)Y +1800(c)Y +1712(c)Y +1624(c)Y +1536(c)Y +1448(c)Y +1360(c)Y +1272(c)Y +1184(c)Y +1096(c)Y +1008(c)Y +920(c)Y +832(c)Y +744(c)Y +1 f +1463 2464(Table)N +1686(5:)X +1777(Times)X +2020(\(in)X +2140(seconds\))X +2469(for)X +2593(matrix)X +2846 0.3365(multiplication)AX +576 2688(\(such)N +790(as)X +887(\256lesystems)X +1303(etc.\))X +1481(may)X +1657(be)X +1764(exploited;)X +2142(for)X +2268(very)X +2449(large)X +2650(datasets,)X +2976(asymmetric)X +3413(partitioning)X +3851(algo-)X +576 2800(rithms)N +824(can)X +968(contribute)X +1348(signi\256cantly)X +1807(to)X +1898(reduced)X +2198(I/O)X +2337(and)X +2486(swapping)X +2845(overheads.)X +3 f +576 3136(5.2.)N +752(Contaminant)X +1272(Transport)X +1680(Simulation)X +1 f +776 3388(To)N +896(further)X +1157(exercise)X +1468(the)X +1599(heterogeneous)X +2130(computing)X +2531(facilities)X +2859(in)X +3 f +9 s +2947(PVM)X +1 f +11 s +3111(,)X +3156(an)X +3262(interactive)X +3658(simulation)X +576 3500(program)N +900(was)X +1062(ported)X +1313(to)X +1408(the)X +1541(system.)X +1833(This)X +2015(simulation)X +2414(models)X +2694(contaminant)X +3156(transport)X +3494(in)X +3588(groundwater)X +576 3612(\257ow,)N +777(and)X +927(is)X +1010(part)X +1171(of)X +1268(a)X +1331(larger)X +1560(and)X +1711(more)X +1916(comprehensive)X +2473(simulation)X +2871(effort.)X +3112(Preliminary)X +3553(\256ndings)X +3861(from)X +576 3724(this)N +727(work)X +930(are)X +1060(reported)X +1376(in)X +1468([2].)X +1615(The)X +1774(major)X +2002(components)X +2450(of)X +2545(the)X +2675(existing)X +2977(software)X +3301(are)X +3430(a)X +3491(graphical)X +3841(inter-)X +576 3836(face)N +754(and)X +913(the)X +1053(solution)X +1370(of)X +1476(sets)X +1641(of)X +1747(differential)X +2172(equations)X +2543(involving)X +2915(transport)X +3261(calculations)X +3716(and)X +3876(\257ow)X +576 3948(calculations.)N +1043(The)X +1203(transport)X +1539(calculations)X +1984(are)X +2114(highly)X +2363(parallelizable,)X +2884(while)X +3103(the)X +3234(\257ow)X +3413(equations)X +3774(may)X +3949(be)X +576 4060(well)N +786(solved)X +1074(on)X +1220(a)X +1317(fast)X +1502(scalar)X +1765(machine.)X +2144(The)X +2340(existing)X +2679 0.2885(implementation)AX +3294(encountered)X +3783(several)X +576 4172(dif\256culties,)N +1003(including)X +1364(the)X +1499(interfacing)X +1908(of)X +2007(the)X +2141(two)X +2299(computational)X +2831(components,)X +3305(the)X +3439(transfer)X +3733(of)X +3832(struc-)X +576 4284(tured)N +786(data)X +962(between)X +1284(multiple)X +1631(instances,)X +2006(and)X +2163(interactions)X +2605(with)X +2792(an)X +2905(X-windows)X +3344(graphical)X +3702(interface.)X +576 4396(The)N +735(latter)X +939(issue)X +1137(was)X +1295(particularly)X +1724(cumbersome)X +2196(when)X +2408(the)X +2538(system)X +2805(was)X +2963(run)X +3102(over)X +3280(a)X +3341(wide)X +3534(area)X +3702(network.)X +776 4648(The)N +947(simulation)X +1355(programs)X +1721(were)X +1925(ported)X +2184(for)X +3 f +9 s +2316(PVM)X +1 f +11 s +2515(use,)X +2689(by)X +2812(partitioning)X +3260(the)X +3403(system)X +3683(into)X +3856(three)X +576 4760(components)N +1030(-)X +1087(the)X +1223(transport)X +1564(calculations)X +2014(\(executed)X +2384(on)X +2500(a)X +2567(hypercube\),)X +3012(the)X +3147(\257ow)X +3330(equations)X +3695(\(on)X +3839(a)X +3905(fast)X +576 4872(scalar)N +807(machine\),)X +1183(and)X +1336(the)X +1470(graphical)X +1824(interface)X +2158(on)X +2272(a)X +2337(Sun)X +2500(workstation.)X +2964(Very)X +3165(few)X +3322(modi\256cations)X +3829(in)X +3924(the)X +576 4984(existing)N +900(codes)X +1144(were)X +1358(required;)X +1719(the)X +1870(scalar)X +2118(and)X +2288(hypercube)X +2697(components)X +3166(interacted)X +3557(via)X +3708(emulated)X +576 5096(shared)N +828(memory)X +1145(while)X +1364(the)X +1495(graphics)X +1816(component)X +2231(used)X +2415(the)X +2546(fast)X +2696(message)X +3017(passing)X +3304(primitives)X +3686(in)X +3 f +9 s +3775(PVM)X +1 f +11 s +3963(to)X +576 5208(achieve)N +868(better)X +1092(response)X +1422(and)X +1571(lowered)X +1876(latency.)X +2175(An)X +2304(additional)X +2680(bene\256t)X +2942(was)X +3100(the)X +3230(mobility)X +3553(of)X +3648(the)X +3778(graphi-)X +576 5320(cal)N +705(interface)X +1039(component;)X +1482(due)X +1635(to)X +1731(the)X +1866(connectionless)X +2412(nature)X +2659(of)X +3 f +9 s +2755(PVM)X +1 f +11 s +2946(interactions,)X +3407(it)X +3484(was)X +3647(possible)X +3963(to)X +576 5432(execute)N +877(the)X +1017(graphical)X +1377(interface)X +1717(program)X +2047(from)X +2250(different)X +2585(locations)X +2936(in)X +3037(a)X +3107(manner)X +3402(transparent)X +3824(to)X +3924(the)X +576 5544(computational)N +1108(components.)X +1582(Further,)X +1889(multiple)X +2211(displays)X +2527(were)X +2724(possible)X +3040(by)X +3155(using)X +3373(the)X +3 f +9 s +3504(PVM)X +1 f +11 s +3695(broadcast)X +576 5656(facilities,)N +930(a)X +996(useful)X +1238(feature)X +1509(when)X +1725(several)X +2000(simultaneous)X +2492(users)X +2698(wish)X +2890(to)X +2985(interact)X +3276(with)X +3459(the)X +3593(system.)X +3886(Due)X +576 5768(to)N +668(the)X +799(interactive)X +1195(nature)X +1438(of)X +1534(the)X +1665(application,)X +2103(performance)X +2570(timings)X +2859(are)X +2989(not)X +3125(meaningful;)X +3576(however,)X +3924(the)X + +23 p +%%Page: 23 23 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(23)X +2370(-)X +576 688(system)N +843(performed)X +1231(without)X +1523(any)X +1672(noticeable)X +2057(degradation)X +2495(when)X +2707(executed)X +3042(under)X +3 f +9 s +3260(PVM)X +1 f +11 s +3424(.)X +3 f +576 1024(6.)N +686(Conclusions)X +1163(and)X +1327(Future)X +1608(Work)X +1 f +776 1276(The)N +947(primary)X +1260(motivation)X +1678(for)X +1814(the)X +3 f +9 s +1952(PVM)X +1 f +11 s +2150(project)X +2429(is)X +2522(derived)X +2820(from)X +3025(the)X +3167(existing)X +3482(and)X +3644(anticipated)X +576 1388(need)N +770(for)X +900(a)X +967(general,)X +1276(\257exible,)X +1591(and)X +1746(inexpensive)X +2195(concurrent)X +2599(programming)X +3107(environment.)X +3602(Experiences)X +576 1500(with)N +763(the)X +901(system)X +1177(have)X +1374(demonstrated)X +1880(that)X +2044(such)X +2236(a)X +2306(framework)X +2722(can)X +2875(be)X +2989(provided)X +3333(and)X +3491(can)X +3644(execute)X +3944(on)X +576 1612(existing)N +881(hardware)X +1232(bases,)X +1469(with)X +1651(the)X +1784(bene\256ts)X +2083(of)X +2181(a)X +2245(procedural)X +2646(programming)X +3151(interface)X +3484(and)X +3636(straightfor-)X +576 1724(ward)N +777(constructs)X +1160(for)X +1288(access)X +1538(to)X +1633(various)X +1918(resources.)X +2297(A)X +2386(noteworthy)X +2813(feature)X +3083(of)X +3 f +9 s +3178(PVM)X +1 f +11 s +3368(is)X +3453(its)X +3564(generality)X +3944(\320)X +576 1836(supporting)N +984(both)X +1172(the)X +1310(shared-memory)X +1892(and)X +2049(message-passing)X +2670(paradigms)X +3067(on)X +3185(a)X +3254(heterogeneous)X +3792(collec-)X +576 1948(tion)N +736(of)X +831(machines)X +1186(is)X +1267(useful.)X +1548(The)X +1707(framework)X +2114(provided)X +2450(by)X +3 f +9 s +2557(PVM)X +1 f +11 s +2744(enables)X +3031(interaction)X +3432(between)X +3748(applica-)X +576 2060(tion)N +754(components)X +1220(and)X +1387(machine)X +1726(architectures)X +2216(that)X +2389(are)X +2536(normally)X +2895(incompatible.)X +3418(Anticipating)X +3899(that)X +576 2172(large)N +776(and)X +927(complex)X +1255(parallel)X +1544(systems)X +1847(will)X +2009(require)X +2282(error)X +2476(indication)X +2854(and)X +3005(failure)X +3259(detection)X +3607(capabilities,)X +576 2284(such)N +762(features)X +1065(have)X +1256(been)X +1447(built)X +1635(into)X +1798(the)X +3 f +9 s +1927(PVM)X +1 f +11 s +2116(system)X +2386(and)X +2538(are)X +2670(likely)X +2897(to)X +2990(be)X +3097(valuable.)X +3442(From)X +3657(the)X +3789(perfor-)X +576 2396(mance)N +837(point)X +1050(of)X +1154(view,)X +3 f +9 s +1374(PVM)X +1 f +11 s +1569(has)X +1717(proven)X +1992(to)X +2092(be)X +2207(acceptable)X +2611(even)X +2809(for)X +2943(applications)X +3402(with)X +3591(a)X +3662(high)X +3851(com-)X +576 2508(munication)N +1009(to)X +1113(computation)X +1590(ratio)X +1787(\320)X +1910(although)X +2253(its)X +2371(primary)X +2684(intent)X +2920(is)X +3013(to)X +3116(support)X +3414(applications)X +3875(with)X +576 2620(much)N +795(larger)X +1023(grainsize)X +1365(and)X +1516(less)X +1672(interaction.)X +2096(Perhaps)X +2398(of)X +2495(more)X +2700(importance)X +3121(in)X +3214(certain)X +3478(situations)X +3841(is)X +3924(the)X +576 2732(ability)N +829(of)X +3 f +9 s +924(PVM)X +1 f +11 s +1114(to)X +1209(utilize)X +1457(resources)X +1814(that)X +1973(already)X +2258(exist)X +2451(and)X +2604(would)X +2850(be)X +2959(wasted)X +3229(otherwise,)X +3619(not)X +3757(to)X +3851(men-)X +576 2844(tion)N +740(its)X +850(value)X +1067(as)X +1166(a)X +1231(prototyping)X +1669(tool)X +1833(for)X +1961(new)X +2133(algorithms)X +2537(or)X +2636(applications.)X +3133(The)X +3296 0.3403(simplicity)AX +3677(of)X +3777(porting)X +576 2956(the)N +3 f +9 s +705(PVM)X +1 f +11 s +894(system)X +1164(as)X +1262(well)X +1439(as)X +1537(application)X +1955(software)X +2282(also)X +2449(enhances)X +2796(its)X +2905(appeal)X +3160(and)X +3311(will)X +3473(contribute)X +3855(to)X +3948(its)X +576 3068(increased)N +930(use.)X +776 3320(There)N +1003(are,)X +1154(however,)X +1500(several)X +1771(aspects)X +2047(to)X +3 f +9 s +2134(PVM)X +1 f +11 s +2320(that)X +2475(require)X +2746(further)X +3008(work;)X +3236(some)X +3445(efforts)X +3697(are)X +3827(ongo-)X +576 3432(ing)N +720(while)X +947(others)X +1193(are)X +1331(planned)X +1641(for)X +1774(the)X +1913(future.)X +2198(A)X +2292(very)X +2479(valuable)X +2809(addition)X +3129(would)X +3379(be)X +3492(a)X +3561(supplemental)X +576 3544(toolkit)N +832(that)X +989(assisted)X +1287(in)X +1380(algorithm)X +1748(partitioning)X +2185(and)X +2336(scheduling,)X +2764(as)X +2861(well)X +3037(as)X +3134(support)X +3423(for)X +3550(the)X +3683(automatic)X +576 3656(compilation)N +1024(of)X +1122(different)X +1450(object)X +1691(modules)X +2015(for)X +2142(different)X +2470(architectures.)X +2967(From)X +3183(the)X +3316(system)X +3585(implementa-)X +576 3768(tion)N +742(point)X +952(of)X +1053(view,)X +1274(it)X +1352(is)X +1439(evident)X +1727(that)X +1888(the)X +2024(data)X +2199(transfer,)X +2518(broadcast,)X +2906(and)X +3062(mutual)X +3337(exclusion)X +3704(protocols)X +576 3880(are)N +712(the)X +849(most)X +1050(crucial)X +1319(primitives,)X +1729(and)X +1885(work)X +2094(is)X +2181(in)X +2278(progress)X +2603(to)X +2700(optimize)X +3038(these.)X +3269(Con\257ict)X +3582(resolution)X +3963(in)X +576 3992(the)N +716(locking)X +1013(algorithm)X +1389(presently)X +1744(uses)X +1927(a)X +1999(heuristic)X +2336(method)X +2634(\320)X +2755(a)X +2827(provably)X +3173(correct)X +3450(formalization)X +3959(of)X +576 4104(this)N +727(will)X +887(be)X +992(undertaken)X +1405(soon.)X +1615(From)X +1828(the)X +1958(application)X +2373(point)X +2577(of)X +2672(view,)X +2887(certain)X +3149(additional)X +3525(features)X +3825(might)X +576 4216(be)N +695(desirable)X +1050(such)X +1248(as)X +1358(\(1\))X +1497(the)X +1642(ability)X +1906(to)X +2012(coalesce)X +2347(emulated)X +2708(and)X +2872(real)X +3041(shared)X +3307(memory,)X +3660(and)X +3824(\(2\))X +3963(to)X +576 4328(dynamically)N +1046(optimize)X +1389(message)X +1720(passing,)X +2039(locking)X +2337(etc.,)X +2517(depending)X +2917(on)X +3038(the)X +3178(architecture)X +3626(on)X +3746(which)X +3993(a)X +576 4440(component)N +1003(instance)X +1327(is)X +1421(executing.)X +1821(Also)X +2022(planned)X +2336(for)X +2473(the)X +2616(future)X +2861(are)X +3003(a)X +3078(graphical)X +3442(interface)X +3786(for)X +3924(the)X +576 4552(speci\256cation)N +1049(of)X +1149(component)X +1568(execution)X +1938(order)X +2149(and)X +2302(interactions,)X +2762(as)X +2861(well)X +3039(as)X +3138(debugging)X +3536(and)X +3689(execution)X +576 4664(history)N +843(trace)X +1036(facilities.)X +3 f +576 5000(Acknowledgments)N +1 f +776 5252(The)N +935(author)X +1182(is)X +1263(indebted)X +1589(to)X +1680(the)X +1810(referees,)X +2131(particularly)X +2560(the)X +2690(second)X +2956(referee,)X +3243(for)X +3367(detailed)X +3669(comments)X +576 5364(that)N +739(resulted)X +1048(in)X +1147(many)X +1373(improvements)X +1908(in)X +2007(the)X +2145(system)X +2419(and)X +2575(this)X +2732(paper.)X +2978(Thanks)X +3266(are)X +3402(also)X +3573(due)X +3729(to)X +3827(M.)X +3956(T.)X +576 5476(Heath,)N +831(G.)X +939(A.)X +1047(Geist,)X +1278(T.)X +1377(H.)X +1485(Dunigan,)X +1833(and)X +1983(D.)X +2092(A.)X +2201(Poplawski)X +2592(for)X +2718(helpful)X +2992(discussions)X +3417(during)X +3671(the)X +3803(course)X +576 5588(of)N +671(this)X +821(work)X +1023(and)X +1172(for)X +1296(their)X +1480(comments)X +1865(on)X +1975(earlier)X +2222(versions)X +2537(of)X +2632(this)X +2782(paper.)X + +24 p +%%Page: 24 24 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(24)X +2370(-)X +3 f +576 688(References)N +1 f +576 940([1])N +776(K.)X +896(Hwang,)X +1206(F.)X +1312(A.)X +1432(Briggs,)X +2 f +1724(Computer)X +2112(Architecture)X +2589(and)X +2757(Parallel)X +3083(Processing)X +1 f +3474(,)X +3532(McGraw-Hill,)X +776 1052(New)N +963(York,)X +1187(1984.)X +576 1192([2])N +776(H.)X +884(Narang,)X +1188(R.)X +1293(Flanery,)X +1608(J.)X +1688(Drake,)X +2 f +1948(Design)X +2221(of)X +2314(a)X +2382(Simulation)X +2789(Interface)X +3131(for)X +3258(a)X +3326(Parallel)X +3640(Computing)X +776 1304(Environment)N +1 f +1231(,)X +1275(Proc.)X +1502(ACM)X +1724(Southeastern)X +2201(Regional)X +2542(Conference,)X +2991(April)X +3199(1990,)X +3419(to)X +3510(appear.)X +576 1444([3])N +776(G.)X +888(A.)X +1000(Geist,)X +1235(M.)X +1362(T.)X +1465(Heath,)X +1724(B.)X +1832(W.)X +1964(Peyton,)X +2258(P.)X +2356(H.)X +2468(Worley,)X +2 f +2781(A)X +2862(Machine)X +3198(Independent)X +3661(Communi-)X +776 1556(cation)N +1023(Library)X +1 f +1292(,)X +1339(Proc.)X +1547(Hypercube)X +1957(Concurrent)X +2378(Computers)X +2790(Conference)X +3220(1989,)X +3443(J.)X +3524(Gustafson)X +3905(ed.,)X +776 1668(to)N +867(appear.)X +576 1808([4])N +776(T.)X +881(J.)X +966(Gardner,)X +2 f +1304(et.)X +1419(al.)X +1 f +1510(,)X +2 f +1561(DPUP)X +1824(:)X +1882(A)X +1965(Distributed)X +2418(Processing)X +2838(Utilities)X +3153(Package)X +1 f +3456(,)X +3507(Computer)X +3890(Sci-)X +776 1920(ence)N +959(Technical)X +1329(Report,)X +1613(University)X +2007(of)X +2102(Colorado,)X +2474(Boulder,)X +2802(1986.)X +576 2060([5])N +776(T.)X +895(H.)X +1023(Dunigan,)X +2 f +1391(Hypercube)X +1819(Simulation)X +2245(on)X +2376(a)X +2463(Local)X +2707(Area)X +2921(Network)X +1 f +3220(,)X +3285(Oak)X +3474(Ridge)X +3728(National)X +776 2172(Laboratory)N +1189(Report)X +1451(ORNL/TM-10685,)X +2140(November)X +2533(1988.)X +576 2312([6])N +776(C.)X +884(Seitz,)X +1110(J.)X +1193(Seizovic,)X +1546(W.)X +1678(K.)X +1790(Su,)X +2 f +1932(The)X +2091(C)X +2177(programmer's)X +2710(Abbreviated)X +3168(Guide)X +3411(to)X +3508(Multicomputer)X +776 2424(Programming)N +1 f +1269(,)X +1313(Caltech)X +1605(Computer)X +1980(Science)X +2276(Report,)X +2560(CS-TR-88-1,)X +3044(January)X +3339(1988.)X +576 2564([7])N +776(M.)X +914(Sullivan,)X +1269(D.)X +1392(Anderson,)X +2 f +1793(Marionette:)X +2252(A)X +2344(System)X +2627(for)X +2769(Parallel)X +3098(Distributed)X +3539(Programming)X +776 2676(Using)N +1008(a)X +1074(Master/Slave)X +1561(Model)X +1 f +1786(,)X +1830(Proc.)X +2057(9th)X +2192(ICDCS,)X +2495(June)X +2678(1989,)X +2898(pp.)X +3030(181-188.)X +576 2816([8])N +776(G.)X +906(Riccardi,)X +1272(B.)X +1398(Traversat,)X +1797(U.)X +1927(Chandra,)X +2 f +2293(A)X +2393(Master-Slaves)X +2942(Parallel)X +3278(Computation)X +3785(Model)X +1 f +4010(,)X +776 2928(Supercomputer)N +1336(Research)X +1680(Institute)X +1992(Report,)X +2276(Florida)X +2553(State)X +2752(University,)X +3168(June)X +3351(1989.)X +576 3068([9])N +776(Intel)X +960(iPSC/2)X +1233(Programmer's)X +1758(Reference)X +2136(Manual,)X +2449(Intel)X +2633(Corporation,)X +3103(Beaverton,)X +3509(March)X +3760(1988.)X +576 3208([10])N +776(A.)X +883(Karp,)X +2 f +1102(Programming)X +1617(for)X +1742(Parallelism)X +1 f +2154(,)X +2198(IEEE)X +2411(Computer,)X +2808(May)X +2991(1987,)X +3211(pp.)X +3343(43-57.)X +576 3348([11])N +776(J.)X +865(B.)X +979(Postel,)X +2 f +1251(User)X +1455(Datagram)X +1850(Protocol)X +1 f +2159(,)X +2215(Internet)X +2523(Request)X +2841(for)X +2977(Comments)X +3394(RFC-768,)X +3778(August)X +776 3460(1980.)N +576 3600([12])N +776(N.)X +888(Maekawa,)X +2 f +1279(A)X +9 f +1361 3583 MXY +(sr)214 549 oc +10 f +1409(d)X +1423(d)X +2 f +1409 3600(n)N +1495(Algorithm)X +1881(for)X +2012(Mutual)X +2295(Exclusion)X +2671(in)X +2768(Decentralized)X +3290(Systems,)X +3618(ACM)X +3832(Tran-)X +776 3712(sactions)N +1087(on)X +1197(Computer)X +1571(Systems,)X +1893(May)X +2071(1985,)X +2291(pp.)X +2423(145-159.)X +1 f +576 3852([13])N +776(K.)X +895(Raymond,)X +2 f +1294(A)X +1382(Tree)X +1577(Based)X +1827(Algorithm)X +2220(for)X +2358(Distributed)X +2795(Mutual)X +3085(Exclusion)X +1 f +3433(,)X +3490(ACM)X +3725(Transac-)X +776 3964(tions)N +970(on)X +1080(Computer)X +1455(Systems,)X +1793(February)X +2132(1989,)X +2352(pp.)X +2484(61-77.)X +576 4104([14])N +776(D.)X +886(Agarwal,)X +1235(A.)X +1345(E.)X +1446(Abbadi,)X +2 f +1752(An)X +1875(Ef\256cient)X +2195(Solution)X +2515(to)X +2610(the)X +2744(Distributed)X +3172(Mutual)X +3453(Exclusion)X +3827(Prob-)X +776 4216(lem)N +1 f +903(,)X +947(Proc.)X +1152(Principles)X +1527(of)X +1622(Distributed)X +2041(Computing)X +2461(Conference,)X +2910(Edmonton,)X +3322(August)X +3598(1989.)X +576 4356([15])N +776(J.)X +856(S.)X +951(Chase)X +2 f +1190(et.)X +1300(al.)X +1 f +1391(,)X +2 f +1437(The)X +1593(Amber)X +1851(System:)X +2148(Parallel)X +2462(Programming)X +2979(on)X +3091(a)X +3159(Network)X +3483(of)X +3577(Multiproces-)X +776 4468(sors)N +1 f +922(,)X +966(to)X +1057(appear)X +1313(in)X +1404(12th)X +1583(SOSP,)X +1837(Litch\256eld)X +2203(Park,)X +2408(November)X +2801(1989.)X +576 4608([16])N +776(G.)X +891(A.)X +1006(Geist,)X +1244(M.)X +1374(T.)X +1480(Heath,)X +2 f +1742(Matrix)X +2012(Factorization)X +2524(on)X +2643(Hypercube)X +3059(Multiprocessors)X +1 f +(,)S +3684(in)X +3784(Hyper-)X +776 4720(cube)N +964(Multiprocessors)X +1553(1986,)X +1773(SIAM,)X +2036(Philadelphia,)X +2522(1986,)X +2742(pp.)X +2874(161-180.)X +576 4860([17])N +776(D.)X +891(W.)X +1026(Lozier,)X +1308(R.)X +1419(G.)X +1535(Rehm,)X +2 f +1799(Some)X +2020(Performance)X +2510(Comparisons)X +3010(for)X +3144(a)X +3219(Fluid)X +3442(Dynamics)X +3824(Code)X +1 f +4010(,)X +776 4972(Parallel)N +1068(Computing,)X +1510(Vol.)X +1686(11,)X +1818(pp.)X +1950(305-320,)X +2287(1989.)X +576 5112([18])N +776(G.)X +884(C.)X +988(Fox,)X +1170(S.)X +1264(W.)X +1392(Otto,)X +2 f +1594(Matrix)X +1858(Algorithms)X +2274(on)X +2386(a)X +2454(Hypercube)X +2863(I:)X +2945(Matrix)X +3209 0.2740(Multiplication)AX +1 f +3716(,)X +3762(Parallel)X +776 5224(Computing,)N +1218(Vol.)X +1394(4,)X +1482(pp.)X +1614(17-31,)X +1863(1987.)X +576 5364([19])N +776(A.)X +902(Osterhaug,)X +2 f +1326(Guide)X +1583(to)X +1694(Parallel)X +2026(Programming)X +2561(on)X +2691(Sequent)X +3012(Computer)X +3406(Systems)X +1 f +3684(,)X +3748(Sequent)X +776 5476(Computer)N +1151(Systems,)X +1489(Inc.,)X +1667(Beaverton,)X +2073(1986.)X +576 5616([20])N +776(R.)X +886(Finkel,)X +1163(E.)X +1268(Styer,)X +1505(U.)X +1619(Manber,)X +2 f +1943(Designing)X +2334(Ef\256cient)X +2658(Barriers)X +2985(in)X +3084(Communication)X +3677(Networks)X +1 f +4010(,)X +776 5728(University)N +1170(of)X +1265(Kentucky)X +1629(Technical)X +1999(Report,)X +2283(No.)X +2434(165-90,)X +2727(March)X +2978(1990.)X + +25 p +%%Page: 25 25 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(25)X +2370(-)X +3 f +1459 688(Appendix)N +1848(\320)X +1958(PVM)X +2180(User)X +2377(Interface)X +2740(Constructs)X +576 940(enroll)N +1 f +797(\()X +2 f +826()X +1 f +1134(\))X +776 1080(Enroll)N +1019(calling)X +1282(process)X +1567(as)X +2 f +1662()X +1 f +1970(.)X +2014(Returns)X +2310(instance)X +2621(number.)X +3 f +576 1248(initiate)N +1 f +841(\()X +2 f +870()X +1 f +1586(\))X +776 1388(Start)N +965(new)X +1133(process)X +1418(speci\256ed)X +1753(by)X +2 f +1863()X +1 f +2579(.)X +2623(Returns)X +2919(instance)X +3230(number.)X +3 f +576 1556(initiateP)N +1 f +895(\()X +2 f +924()X +1 f +1276(,)X +2 f +()S +1 f +1650(,)X +2 f +()S +1 f +1966(\))X +776 1696(Start)N +965(new)X +1133(instance)X +1444(of)X +2 f +1539()X +1 f +1913(when)X +2 f +2125()X +1 f +2477(/)X +2 f +2502()X +1 f +2818(terminates.)X +3 f +576 1864(initiateD)N +1 f +904(\()X +2 f +933()X +1 f +1241(,)X +2 f +()S +1 f +1567(\))X +776 2004(Start)N +965(new)X +1133(instance)X +1444(of)X +2 f +1539()X +1 f +1869(when)X +2 f +2081()X +1 f +2407(occurs.)X +3 f +576 2172(ready)N +1 f +791(\()X +2 f +820()X +1 f +1124(\))X +776 2312(Inform)N +3 f +9 s +1038(PVM)X +1 f +11 s +1224(system)X +1491(of)X +1586(occurrence)X +1993(of)X +2 f +2088()X +1 f +2392(.)X +3 f +576 2480(terminate)N +1 f +942(\()X +2 f +971()X +1 f +1279(,)X +2 f +()S +1 f +1595(\))X +776 2620(Terminate)N +1161(instance)X +2 f +1472()X +1 f +1788(of)X +1883(component)X +2 f +2297()X +1 f +2605(.)X +3 f +576 2788(waitprocess)N +1 f +1015(\()X +2 f +1044()X +1 f +1352(,)X +2 f +()S +1 f +1668(\))X +776 2928(Block)N +1009(caller)X +1227(until)X +1412(instance)X +2 f +1723()X +1 f +2039(of)X +2 f +2134()X +1 f +2464(terminates.)X +3 f +576 3096(send)N +1 f +747(\()X +2 f +776()X +1 f +1084(,)X +2 f +()S +1 f +1400(,)X +2 f +()S +1 f +1687(\))X +776 3236(Send)N +983(message)X +1312(of)X +1417(speci\256ed)X +1762(type)X +1946(to)X +2047(speci\256ed)X +2392(destination)X +2812(process.)X +3129(Negative)X +3479(return)X +3721(value)X +3944(on)X +776 3348(failure.)N +3 f +576 3516(recv)N +1 f +737(\()X +2 f +766()X +1 f +1031(\))X +776 3656(Receive)N +1082(message)X +1402(of)X +1497(speci\256ed)X +1832(type.)X +3 f +576 3824(recv1)N +1 f +781(\()X +2 f +810()X +1 f +1075(,)X +2 f +()S +1 f +1608(\))X +776 3964(Receive)N +1092(message)X +1422(of)X +1527(speci\256ed)X +1873(type;)X +2 f +2083()X +1 f +2627(msgs)X +2841(of)X +2947(other)X +3161(types)X +3380(allowed.)X +3714(Negative)X +776 4076(return)N +1008(value)X +1221(on)X +1331(failure.)X +3 f +576 4244(recv2)N +1 f +781(\()X +2 f +810()X +1 f +1119(,)X +2 f +()S +1 f +1524(\))X +776 4384(Receive)N +1118(message)X +1452(of)X +1561(speci\256ed)X +1910(type)X +2098(within)X +2 f +2360()X +1 f +2779(seconds.)X +3115(Negative)X +3469(return)X +3716(value)X +3944(on)X +776 4496(failure.)N +3 f +576 4664(putstring)N +1 f +923(\()X +2 f +952()X +1 f +1276(\))X +776 4804(Store)N +2 f +984()X +1 f +1330(in)X +1421(send)X +1604(buffer)X +1840(in)X +1931(machine)X +2252(independent)X +2705(form.)X +3 f +576 4972(putint)N +1 f +806(\()X +2 f +835()X +1 f +1104(\))X +776 5112(Store)N +984(integer)X +1251(in)X +1342(send)X +1525(buffer)X +1761(in)X +1852(machine)X +2173(independent)X +2626(form.)X +3 f +576 5280(put\257oat)N +1 f +869(\()X +2 f +898()X +1 f +1192(\))X +776 5420(Store)N +984(real)X +1138(number)X +1429(in)X +1520(send)X +1703(buffer)X +1939(in)X +2030(machine)X +2351(independent)X +2804(form.)X +3 f +576 5588(getstring)N +1 f +908(\()X +2 f +937()X +1 f +1408(\))X +776 5728(Retrieve)N +1097(string)X +1320(from)X +1513(receive)X +1789(buffer)X +2025(in)X +2116(machine)X +2437(dependent)X +2821(form.)X + +26 p +%%Page: 26 26 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(26)X +2370(-)X +3 f +576 688(getint)N +1 f +791(\()X +2 f +820()X +1 f +1335(\))X +776 828(Retrieve)N +1097(integer)X +1364(from)X +1557(receive)X +1833(buffer)X +2069(in)X +2160(machine)X +2481(dependent)X +2865(form.)X +3 f +576 996(get\257oat)N +1 f +854(\()X +2 f +883(<\257oat_ptr>)X +1 f +1305(\))X +776 1136(Retrieve)N +1097(real)X +1251(number)X +1542(from)X +1735(receive)X +2011(buffer)X +2247(in)X +2338(machine)X +2659(dependent)X +3043(form.)X +3 f +576 1304(recvinfo)N +1 f +884(\()X +2 f +913()X +1 f +1384(,)X +2 f +()S +1 f +1847(,)X +2 f +()S +1 f +2242(\))X +776 1444(Return)N +1038(source)X +1289(name,)X +1524(instance)X +1835(number,)X +2148(and)X +2297(length)X +2540(of)X +2635(last)X +2780(received)X +3100(message.)X +3 f +576 1612(broadcast)N +1 f +947(\()X +2 f +976()X +1 f +1284(\))X +776 1752(Broadcast)N +1150(send)X +1333(buffer)X +1569(to)X +1660(all)X +1771(instances)X +2116(of)X +2 f +2211()X +1 f +2519(.)X +2563(Returns)X +2859(actual)X +3092(number)X +3383(of)X +3478(recipients.)X +3 f +576 1920(barrier)N +1 f +850(\()X +2 f +879()X +1 f +1265(\))X +776 2060(Blocks)N +1049(caller)X +1274(until)X +1466(speci\256ed)X +1808(number)X +2106(of)X +2208(instances)X +2560(arrive)X +2794(at)X +2887(barrier.)X +3172(Negative)X +3519(return)X +3758(value)X +3978(if)X +776 2172(some)N +984(instances)X +1329(have)X +1517(terminated.)X +3 f +576 2340(waituntil)N +1 f +914(\()X +2 f +943()X +1 f +1247(\))X +776 2480(Blocks)N +1043(caller)X +1261(until)X +1446(speci\256ed)X +1781(event)X +1994(occurs.)X +3 f +576 2648(shmget)N +1 f +844(\()X +2 f +873()X +1 f +1108(,)X +2 f +()S +1 f +1380(\))X +776 2788(Allocates)N +1134(shared)X +1388(memory)X +1708(segment)X +2028(of)X +2127(speci\256ed)X +2466(size)X +2629(identi\256ed)X +2989(by)X +2 f +3103()X +1 f +3338(.)X +3408(A)X +3497(negative)X +3822(return)X +776 2900(value)N +989(indicates)X +1325(that)X +1480(the)X +1610(key)X +1759(value)X +1972(is)X +2053(already)X +2334(in)X +2425(use.)X +3 f +576 3068(shmat)N +1 f +805(\()X +2 f +834()X +1 f +1069(,)X +2 f +()S +1 f +1312(,)X +2 f +(<\257ag>)S +1 f +1584(,)X +2 f +()S +1 f +1989(\))X +776 3208(Locks)N +1022(shared)X +1282(memory)X +1607(segment)X +1932(identi\256ed)X +2297(by)X +2 f +2416()X +1 f +2682(and)X +2840(maps)X +3057(segment)X +3382(at)X +3478(caller's)X +3769(address)X +776 3320(space)N +998(starting)X +1289(at)X +2 f +1379(ptr>)X +1 f +1541(.)X +1589("R")X +1746(or)X +1845("RW")X +2085(are)X +2218(possible)X +2533(\257ag)X +2691(values;)X +2967(a)X +3032(negative)X +3357(value)X +3574(is)X +3659(returned)X +3978(if)X +776 3432(the)N +910(attach)X +1147(does)X +1334(not)X +1473(succeed)X +1778(within)X +2 f +2031()X +1 f +2441(seconds.)X +2768(A)X +2858(0)X +2929(timeout)X +3227(value)X +3445(causes)X +3701(the)X +3836(caller)X +776 3544(to)N +867(block)X +1085(until)X +1270(successful.)X +3 f +576 3712(shmatint)N +1 f +908(\()X +2 f +937()X +1 f +1172(,)X +2 f +()S +1 f +1709(,)X +2 f +(<\257ag>)S +1 f +1981(,)X +2 f +()S +1 f +2386(\))X +776 3852(Variant)N +1062(of)X +3 f +1157(shmat)X +1 f +1408(that)X +1563(maps)X +1771(segment)X +2087(in)X +2178(typed)X +2396(form)X +2589(as)X +2684(integer)X +2951(array.)X +3 f +576 4020(shmat\257oat)N +1 f +971(\()X +2 f +1000()X +1 f +1235(,)X +2 f +(<\257oat_ptr>)S +1 f +1679(,)X +2 f +(<\257ag>)S +1 f +1951(,)X +2 f +()S +1 f +2356(\))X +776 4160(Variant)N +1062(of)X +3 f +1157(shmat)X +1 f +1408(that)X +1563(maps)X +1771(segment)X +2087(in)X +2178(typed)X +2396(form)X +2589(as)X +2684(\257oat)X +2863(array.)X +3 f +576 4328(shmdt)N +1 f +810(\()X +2 f +839()X +1 f +1074(,)X +2 f +()S +1 f +1317(\))X +776 4468(Unlocks)N +1100(and)X +1258(unmaps)X +1563(speci\256ed)X +1907(shared)X +2167(memory)X +2492(segment)X +2817(from)X +3019(process')X +3343(address)X +3638(space)X +3865(indi-)X +776 4580(cated)N +984(by)X +2 f +1094()X +1 f +1315(.)X +3 f +576 4748(shmdtint)N +1 f +913(\()X +2 f +942()X +1 f +1177(,)X +2 f +()S +1 f +1714(\))X +776 4888(Unlocks)N +1110(and)X +1278(unmaps)X +1593(speci\256ed)X +1947(shared)X +2217(memory)X +2552(segment)X +2887(in)X +2997(a)X +3077(typed)X +3314(form)X +3527(from)X +3740(process')X +776 5000(address)N +1061(space)X +1278(indicated)X +1624(by)X +2 f +1734()X +1 f +2249(.)X +3 f +576 5168(shmdt\257oat)N +1 f +976(\()X +2 f +1005()X +1 f +1240(,)X +2 f +(<\257oat_ptr>)S +1 f +1684(\))X +776 5308(Unlocks)N +1110(and)X +1278(unmaps)X +1593(speci\256ed)X +1947(shared)X +2217(memory)X +2552(segment)X +2887(in)X +2997(a)X +3077(typed)X +3314(form)X +3527(from)X +3740(process')X +776 5420(address)N +1061(space)X +1278(indicated)X +1624(by)X +2 f +1734(<\257oat_ptr>)X +1 f +2156(.)X +3 f +576 5588(shmfree)N +1 f +878(\()X +2 f +907()X +1 f +1142(\))X +776 5728(Deallocates)N +1209(speci\256ed)X +1544(shared)X +1795(memory)X +2111(segment.)X + +27 p +%%Page: 27 27 +11 s 11 xH 0 xS 1 f +2209 400(-)N +2260(27)X +2370(-)X +3 f +576 688(lock)N +1 f +733(\()X +2 f +762()X +1 f +1421(,)X +2 f +()S +1 f +1826(\))X +776 828(Permits)N +1070(exclusive)X +1427(access)X +1675(to)X +1768(abstract)X +2067(resource)X +2389(identi\256ed)X +2748(by)X +2861(string-valued)X +2 f +3351()X +1 f +4010(.)X +776 940(Negative)N +1133(return)X +1382(value)X +1612(indicates)X +1964(resource)X +2299(could)X +2533(not)X +2684(be)X +2805(acquired)X +3146(within)X +3410(speci\256ed)X +3761(timeout)X +776 1052(period.)N +3 f +576 1220(unlock)N +1 f +831(\()X +2 f +860()X +1 f +1519(\))X +776 1360(Releases)N +1106(lock)X +1280(on)X +1390(previously)X +1784(acquired)X +2109(resource.)X +3 f +576 1528(status)N +1 f +795(\()X +2 f +824()X +1 f +1562(,)X +2 f +()S +1 f +1878(,)X +2 f +1922()X +1 f +2315(,)X +2 f +()S +1 f +2710(\))X +776 1668(Takes)N +1034(string)X +1283(valued)X +1566(component)X +2006(name)X +2245(and)X +2420(an)X +2551(instance)X +2888(number)X +3205(and)X +3381(returns)X +3674(the)X +3831(status)X +776 1780(\(0=nonexistent,)N +1354(1=active\))X +1714(and)X +1867(location)X +2178(\(processor)X +2569(number)X +2864(in)X +2959(the)X +3093(range)X +3314(0)X +3384(\320)X +3497(p\))X +3595(of)X +3693(that)X +3851(com-)X +776 1892(ponent)N +1038(instance.)X +3 f +576 2060(entercomp)N +1 f +976(\()X +2 f +1005()X +1 f +1313(,)X +2 f +()S +1 f +1903(,)X +2 f +()S +1 f +2308(,)X +2 f +()S +1 f +2609(\))X +776 2200(Permits)N +1077(a)X +1147(component)X +1570(description)X +1993(to)X +2093(be)X +2207(added;)X +2473(specifying)X +2871(the)X +3010(component)X +3433(name,)X +3677(the)X +3816(object)X +776 2312(\256le)N +913(name)X +1128(and)X +1279(the)X +1411(machine)X +1734(on)X +1845(which)X +2083(it)X +2156(is)X +2238(located,)X +2538(and)X +2688(the)X +2819(type)X +2994(of)X +3090(architecture)X +3529(that)X +3685(the)X +3816(object)X +776 2424(will)N +936(execute)X +1227(on.)X +3 f +576 2592(shmstat)N +1 f +868(\()X +2 f +897()X +1 f +1426(,)X +2 f +()S +1 f +1841(\))X +776 2732(Obtains)N +1081(information)X +1529(about)X +1756(shared)X +2016(memory)X +2341(regions.)X +2653(Array)X +2888(of)X +2993(strings)X +3260(holds)X +3483(the)X +3623(key)X +3782(values;)X +776 2844(array)N +987(of)X +1091(integers)X +1401(holds)X +1623(status)X +1855(\(0=free,)X +2167(1=locked\))X +2556(information.)X +3048(Return)X +3319(value)X +3541(speci\256es)X +3874(total)X +776 2956(number)N +1067(of)X +1162(active)X +1395(regions.)X +3 f +576 3124(lockstat)N +1 f +869(\()X +2 f +898()X +1 f +1427(\))X +776 3264(Returns)N +1072(total)X +1252(number)X +1543(of)X +1638(active)X +1871(locks)X +2079(with)X +2258(array)X +2460(of)X +2555(strings)X +2812(holding)X +3104(the)X +3234(key)X +3383(values.)X +3 f +576 3432(Notes:)N +1 f +776 3572(Among)N +1066(the)X +3 f +9 s +1196(PVM)X +1 f +11 s +1386(constructs)X +1769(described)X +2132(above,)X +2390(those)X +2602(concerned)X +2989(with)X +3172(machine)X +3497(dependent)X +3885(data)X +776 3684(representation)N +1304(are)X +1440(to)X +1538(be)X +1650(implemented)X +2141(as)X +2243(part)X +2409(of)X +2511(the)X +2648(installation)X +3071(procedure)X +3451(for)X +3582(architectures)X +776 3796(not)N +922(represented)X +1360(in)X +1462(the)X +1603(generic)X +1895(distribution)X +2336(of)X +2442(the)X +2583(software.)X +2940(Also)X +3139(deemed)X +3446(part)X +3617(of)X +3724(this)X +3886(pro-)X +776 3908(cedure)N +1062(are)X +1221(constructs)X +1630(to)X +1751(handle)X +2038(other)X +2271(data)X +2470(types)X +2708(such)X +2920(as)X +3044(double)X +3335(precision,)X +3731(boolean,)X +776 4020(enumerated)N +1209(types,)X +1439(etc.)X + +27 p +%%Trailer +xt + +xs diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/USG-2007.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/USG-2007.pdf new file mode 100644 index 0000000..5f3cb9c Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/USG-2007.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ZAB-2004.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ZAB-2004.pdf new file mode 100644 index 0000000..9737d12 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ZAB-2004.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ZHA-1999.ps b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ZHA-1999.ps new file mode 100644 index 0000000..54f25b1 --- /dev/null +++ b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Quellen/ZHA-1999.ps @@ -0,0 +1,37443 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.10 +%%CreationDate: Fri Mar 5 21:13:00 1999 +%%DocumentNeededResources: font Times-Bold +%%+ font Times-Italic +%%+ font Times-Roman +%%+ font Courier +%%+ font Symbol +%%DocumentSuppliedResources: file figure4.ps +%%+ file figure3.ps +%%+ file figure2.ps +%%+ file figure1.ps +%%+ procset grops 1.10 0 +%%Pages: 11 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.10 0 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/MANUAL{ +statusdict begin/manualfeed true store end +}bind def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +%%IncludeResource: font Times-Roman +%%IncludeResource: font Courier +%%IncludeResource: font Symbol +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 +def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen +/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Courier@0 ENC0/Courier RE/Times-Roman@0 ENC0/Times-Roman RE +/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 18/Times-Bold@0 SF(Cr)167.931 92 Q(eating Linux V)-.324 E +(irtual Ser)-.666 E -.18(ve)-.18 G(rs).18 E/F1 10/Times-Italic@0 SF -.92 +(We)201.71 116 S(nsong Zhang).92 E 2.5(,S)-.1 G(hiyao Jin, Quanyuan W) +-2.5 E(u)-.55 E/F2 10/Times-Roman@0 SF(National Laboratory for P)172.08 +134 Q(arallel & Distrib)-.15 E(uted Processing)-.2 E +(Changsha, Hunan 410073, China)221.755 146 Q/F3 10/Courier@0 SF +(wensong@iinchina.net)228 158 Q/F4 10/Times-Bold@0 SF(http://pr)214.82 +170 Q(oxy)-.18 E(.iinchina.net/~wensong)-.7 E F1(ABSTRA)264.535 206 Q +(CT)-.3 E F2 .327(Clusters of serv)133 237.2 R .326 +(ers, connected by a f)-.15 F .326(ast netw)-.1 F .326(ork, are emer)-.1 +F .326(ging as a viable architec-)-.18 F 1.414(ture for b)108 249.2 R +1.414(uilding a high-performance and highly a)-.2 F -.25(va)-.2 G 1.414 +(ilable serv).25 F(er)-.15 E 6.414(.T)-.55 G 1.415(his type of loosely) +-6.414 F .364(coupled architecture is more scalable, more cost-ef)108 +261.2 R(fecti)-.25 E .663 -.15(ve a)-.25 H .363 +(nd more reliable than a single).15 F +(processor system or a tightly coupled multiprocessor system.)108 273.2 +Q .024(This paper presents ho)133 288.8 R 2.524(wt)-.25 G 2.524(oc) +-2.524 G .025(reate Linux virtual serv)-2.524 F .025(ers. V)-.15 F .025 +(irtual serv)-.6 F .025(er is a high-per)-.15 F(-)-.2 E 1.031 +(formance and highly a)108 300.8 R -.25(va)-.2 G 1.031(ilable serv).25 F +1.031(er b)-.15 F 1.031(uilt on a cluster of real serv)-.2 F 1.03 +(ers. T)-.15 F 1.23 -.1(wo m)-.8 H 1.03(ethods of).1 F(IP-le)108 312.8 Q +-.15(ve)-.25 G 3.025(ll).15 G .525(oad balancing were de)-3.025 F -.15 +(ve)-.25 G .525(loped to mak).15 F 3.025(ep)-.1 G .526 +(arallel services of the cluster to appear)-3.025 F 1.614 +(as a virtual service on a single IP address, one is virtual serv)108 +324.8 R 1.614(er via Netw)-.15 F 1.614(ork Address)-.1 F -.35(Tr)108 +336.8 S 1.017(anslation, the other is virtual serv).35 F 1.018 +(er via IP tunneling. Currently four scheduling algo-)-.15 F 3.27 +(rithms ha)108 348.8 R 3.57 -.15(ve b)-.2 H 3.27(een de).15 F -.15(ve) +-.25 G 3.27(loped to meet dif).15 F 3.27(ferent application situations.) +-.25 F 3.27(Scalability is)8.27 F(achie)108 360.8 Q -.15(ve)-.25 G 3.477 +(db).15 G 3.477(yt)-3.477 G .977(ransparently adding or remo)-3.477 F +.978(ving a node in the cluster)-.15 F 3.478(.H)-.55 G .978(igh a)-3.478 +F -.25(va)-.2 G .978(ilability is).25 F(pro)108 372.8 Q 1.418 +(vided by detecting node or daemon f)-.15 F 1.417 +(ailures and recon\214guring the system appropri-)-.1 F(ately)108 384.8 +Q(.)-.65 E 1.44 LW 90 408.8 72 408.8 DL 108 408.8 90 408.8 DL 126 408.8 +108 408.8 DL 144 408.8 126 408.8 DL 162 408.8 144 408.8 DL 180 408.8 162 +408.8 DL 198 408.8 180 408.8 DL 216 408.8 198 408.8 DL 234 408.8 216 +408.8 DL 252 408.8 234 408.8 DL 270 408.8 252 408.8 DL 288 408.8 270 +408.8 DL 306 408.8 288 408.8 DL 324 408.8 306 408.8 DL 342 408.8 324 +408.8 DL 360 408.8 342 408.8 DL 378 408.8 360 408.8 DL 396 408.8 378 +408.8 DL 414 408.8 396 408.8 DL 432 408.8 414 408.8 DL 450 408.8 432 +408.8 DL 468 408.8 450 408.8 DL 486 408.8 468 408.8 DL 504 408.8 486 +408.8 DL/F5 16/Times-Bold@0 SF 4(1. Intr)72 453.8 R(oduction)-.288 E F2 +-.4(Wi)72 483.8 S .572(th the e).4 F(xplosi)-.15 E .872 -.15(ve g)-.25 H +(ro).15 E .572 +(wth of the Internet and its increasingly important role in our li)-.25 +F -.15(ve)-.25 G .571(s, the traf).15 F .571(\214c on the)-.25 F .379 +(Internet is increasing dramatically)72 495.8 R 2.879(,w)-.65 G .379 +(hich has been gro)-2.879 F .379(wing at o)-.25 F -.15(ve)-.15 G 2.879 +(r1).15 G .38(00% annual rate. The load on popular)-2.879 F .035 +(Internet sites is gro)72 507.8 R .035(wing rapidly)-.25 F 2.535(,s)-.65 +G .035(ome ha)-2.535 F .335 -.15(ve a)-.2 H .034 +(lready got tens of millions hits per day).15 F 2.534(.M)-.65 G .034 +(ore and more admin-)-2.534 F 1.792(istrators ha)72 519.8 R 2.092 -.15 +(ve m)-.2 H 1.793(et the performance bottleneck problem of their serv) +.15 F 1.793(ers, and with the increasing access)-.15 F .945 +(requests the serv)72 531.8 R .945(ers will be easily o)-.15 F -.15(ve) +-.15 G .945(rloaded for a short time. No).15 F -.1(wa)-.25 G .945 +(days, more and more companies are).1 F(mo)72 543.8 Q .73(ving their b) +-.15 F .73(usinesses on the Internet, an)-.2 F 3.231(yi)-.15 G .731 +(nterrupt/stop of services on the serv)-3.231 F .731(ers means b)-.15 F +.731(usiness lose,)-.2 F .827(and high a)72 555.8 R -.25(va)-.2 G .827 +(ilability of these serv).25 F .827 +(ers becomes increasingly important. Therefore, the demand for scalable) +-.15 F .316(and highly a)72 567.8 R -.25(va)-.2 G .316(ilable serv).25 F +.316(ers is gro)-.15 F .317(wing ur)-.25 F(gently)-.18 E 5.317(.T)-.65 G +.317(he requirements for this type of serv)-5.317 F .317 +(ers are summarized)-.15 F(as follo)72 579.8 Q(ws:)-.25 E 2.5(*I)97 +595.4 S(ncremental scalability)-2.5 E 2.5(*2)97 611 S(4x7 a)-2.5 E -.25 +(va)-.2 G(ilability).25 E 2.5(*C)97 626.6 S(ost-ef)-2.5 E(fecti)-.25 E +-.15(ve)-.25 G(ness).15 E .32(The single serv)72 642.2 R .32 +(er solution, which is to upgrade the serv)-.15 F .32 +(er to a higher performance serv)-.15 F(er)-.15 E 2.82(,h)-.4 G .32 +(as its shortcom-)-2.82 F .197 +(ings to meet the requirements. The upgrading process is comple)72 654.2 +R .197(x, and the original machine may be w)-.15 F(asted.)-.1 E .316 +(When requests increase, it will be o)72 666.2 R -.15(ve)-.15 G .316 +(rloaded soon so that we ha).15 F .616 -.15(ve t)-.2 H 2.816(ou).15 G +.316(pgrade ag)-2.816 F .316(ain. The serv)-.05 F .315(er is a single) +-.15 F(point of f)72 678.2 Q(ailure. The higher end the serv)-.1 E +(er is upgraded to, the higher cost we ha)-.15 E .3 -.15(ve t)-.2 H 2.5 +(op).15 G(ay)-2.5 E(.)-.65 E .51(Clusters of serv)72 693.8 R .51 +(ers, connected by a f)-.15 F .51(ast netw)-.1 F .51(ork, are emer)-.1 F +.51(ging as a viable architecture for b)-.18 F .51(uilding a high-)-.2 F +1.191(performance and highly a)72 705.8 R -.25(va)-.2 G 1.191 +(ilable serv).25 F(er)-.15 E 6.191(.T)-.55 G 1.191 +(his type of loose-coupled architecture is more scalable, more)-6.191 F +(cost-ef)72 717.8 Q(fecti)-.25 E .752 -.15(ve a)-.25 H .452(nd more rel\ +iable than a single processor system or a tightly coupled multiprocesso\ +r system.).15 F(Ho)72 729.8 Q(we)-.25 E -.15(ve)-.25 G 1.386 -.4(r, t) +.15 H .586(here are challenges to pro).4 F .585(vide transparenc)-.15 F +1.885 -.65(y, s)-.15 H .585(calability and high a).65 F -.25(va)-.2 G +.585(ilability of parallel services).25 F EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-2-)282.17 48 Q(in the cluster)72 84 Q(.)-.55 E +1.185(This paper presents ho)72 99.6 R 3.685(wt)-.25 G 3.685(oc)-3.685 G +1.186(reate Linux virtual serv)-3.685 F 1.186(ers. V)-.15 F 1.186 +(irtual serv)-.6 F 1.186(er is a scalable and highly a)-.15 F -.25(va) +-.2 G(ilable).25 E(serv)72 111.6 Q .505(er b)-.15 F .505 +(uilt on a cluster of loosely coupled independent serv)-.2 F .505 +(ers. The architecture of the cluster is transpar)-.15 F(-)-.2 E .387 +(ent to clients outside the cluster)72 123.6 R 2.887(.C)-.55 G .387(lie\ +nt applications interact with the cluster as if it were a single high-p\ +er)-2.887 F(-)-.2 E .272(formance and highly a)72 135.6 R -.25(va)-.2 G +.271(ilable serv).25 F(er)-.15 E 2.771(.T)-.55 G .271 +(he clients are not af)-2.771 F .271 +(fected by interaction with the cluster and do not)-.25 F +(need modi\214cation. The architecture of a generic virtual serv)72 +147.6 Q(er is illustrated in Figure 1.)-.15 E 14 14 360 638 -320.502 568 +108 480.101 PBEGIN +%%BeginDocument: figure1.ps +%%Creator: GIMP PostScript file plugin V 1.04 by Peter Kirchgessner +%%Title: /home/wensong/linuxexpo/figure1.ps +%%CreationDate: Thu Mar 4 20:31:00 1999 +%%DocumentData: Clean7Bit +%%Pages: 1 +%%BoundingBox: 14 14 652 582 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +5 dict begin +% Translate for offset +14.173228 14.173228 translate +% Translate to begin of first scanline +0.000000 566.929134 translate +637.675771 -566.929134 scale +% Variable to keep one line of raster data +/scanline 667 1 mul string def +% Image geometry +667 593 8 +% Transformation matrix +[ 667 0 0 593 0 0 ] +{ currentfile scanline readhexstring pop } +image +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171000000000000000000000000000000000000 +0000000000000000000000000000000000000071717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171717171717171717171717171717171 +7171717171717171717171717171717171000071717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171000000000000000000000000000000 +0000000000000000000000000000000000007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171007171717171717171717171717171 +7171717171717171717171717171717100007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171000000000000000000000000000000 +0000000000000000000000000000000000007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007171717171717171717171717171717171 +7171717171717171717171717171717171007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171007100000000000000000000000000000000 +0000000000000000000000000000000000007171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171000000717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171717171717171717171717171717171717171 +7171717171717171717171717171717171717100000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171717171717171717171717171717171717171 +7171717171717171717171717171717171717100000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171717171717171710071717171717171717171 +0071717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00717171717171717171710071717171717171717171 +0071717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171717171717171 +717171717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000717171717171717171717171717171717171717171 +71000000000000000000000000000000000000000000000000000000007100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000717171717100717171717171717171717171717171717171717171 +71007171717171717171717171717171717171717100007171000000007100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000717171717171717171717171717171717171717171 +71007171710000000000000000000000000071717100007171000000007100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171710000000000000000000000000071717100000000000000007100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717171717171717171717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717171717171717171717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71000000000000000000000000000000000000000000717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717100000000000000717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71000000000000000000000000000000000000007100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717100717171717100717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717100000000000000717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71000000000000000000000000000000000000000000717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717171717171717171717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717171717171717171717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717171717171717171717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717171717171717171717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71007171717171717171717171717171717171717100717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71000000000000000000000000000000000000000000717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0071717171717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717100ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffff000000 +ffffff000000ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ff00ffffff +00ff00ffffff00ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffff0000ff +ffff0000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffffffff00 +ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ff00ffffff +00ff00ffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00000000ffffff000000 +ffffff000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00000000ffffffff00000000ffffffff00000000ffffffff00 +000000ffffffff00000000ffffffff000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6000000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffff000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffff +ffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffff +ffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ff +ffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +00ffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c60000ffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c60000ffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c60000ff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000ffff +ff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c600ffffff0000000000000000000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c60000 +00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6000000c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 +0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171717171717171 +7171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171717171717171 +7171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000000000000000 +0000000000000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000071000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000717171717171717171 +7171710071000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000717171717171717171 +7171717100000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717100000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717171000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c600c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171000000 +0000007171000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6 +c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6 +c6c6c600c600c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171007171 +7171007171000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6 +c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6 +c6c600c6c600c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000007171000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6000000c6c6 +00000000c6c6c6000000c6c6c6c600c60000c600c6000000c6c6c6c6c6000000c6c6c600000000 +c6c600c6c600c6c600c6000000c6c600000000c600c60000c6c6c600000000c6c6c600c6000000 +c6c6c6c6c6000000c6c6c600000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171000000 +0000007171000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c60000c6c6c600c6 +c600c6c6c6c600c6c6c600c6c6c60000c6c6c60000c6c6c600c6c6c600c6c6c600c6c6c600c6c6 +c6c600c6c600c6c60000c6c6c600c6c600c6c6c60000c6c6c6c600c6c6c6c600c6c60000c6c6c6 +00c6c6c600c6c6c600c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717171000071717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6 +c600c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6 +c6c600c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c600c6c6c6c6c600c6c600c6c6c6c6 +00c6c600c6c6c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffff0000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6 +c600c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6 +c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c6c6c6c6c6000000c6c600c6c6c6c6 +00c6c600c6c6c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffff0071717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6 +c600c6c6c600000000000000c6c600c6c6c6c600c6c6c6c600c6c600000000000000c6c600c6c6 +c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c6c6000000c6c600c6c600c6c6c6c6 +00c6c600000000000000c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffff0071717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6 +c600c6c6c600c6c6c6c6c6c6c6c600c6c6c6c600c6c6c6c600c6c600c6c6c6c6c6c6c6c600c6c6 +c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c600c6c6c6c6c600c6c600c6c6c6c6 +00c6c600c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717171000071717100ffff0071717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6 +c600c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6 +c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c600c6c6c6c6c600c6c600c6c6c6c6 +00c6c600c6c6c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171000000000000 +7171717171000071717100ffff0071717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6 +c600c6c6c6c600c6c6c600c6c6c600c6c6c6c600c6c6c6c600c6c6c600c6c6c600c6c6c600c6c6 +00c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c600c6c6c6c60000c6c600c6c6c6c6 +00c6c6c600c6c6c600c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071710000007171717100 +0000717171000071717100ffff0071717171000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000007171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6 +c6000000c6c6c6000000c6c6c6c600c6c6c6c600c6c6c6c600c6c6c6c6000000c6c6c6c6000000 +00c6c6c6c600c6c600c6c6c6c600c6c6000000c600c6c6c6c6c600000000c600c6c600c6c6c6c6 +00c6c6c6c6000000c6c6c6c6000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171000000000000 +7100000071000071717100ffff0071717171007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171007171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7100000071000071717100ffff0071717171007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171710000007171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffff0071717171007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171710071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffff0071717171007171710000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffff00000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000710000000000000000000000 +0000000000000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +7100000071000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +7100000071000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +7100000071000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +7171717171000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +7171717171000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c600ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717171000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c600ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717171000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717171000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717171000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710071717171717171717171 +7171717171000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100710000000000000000000000 +0000000000000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6000000 +00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c600000000c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000ffffff +ff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c600ffffffff0000000000000000000000ffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171717171717171 +7171717171710071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000000000000000 +0000000000000071717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171717171717171 +7171717171717171717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171717171717171 +7171717171717171717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710000000000007100007100007100 +0000000000000000717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171007171710071717171717171717171717171717171 +7171717171717171717171717171717171717171717171000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171007171710000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171710071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171007100000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000071717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171007100717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171000000717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0071717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c60000ff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0000000000000000000000000000000000000000000000000000 +0000000071717171717171717171717171717171717171717171710000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c60000ffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710000000000007100007100007100 +0000000000000000717100ffff0071717171717171717171717171007171717171717171717171 +7171710071717171717171717171717171717171717171717171710000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c60000ffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710000000000007100007100007100 +0000000000000000717100ffff0071717171717171717171717171007171717171717171717171 +7171710071717171717171717171717171717171717171717171717171717100ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffff0000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000 +ffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffffffffffffffffffffffffff000000007171717171717171717171 +71717171717171717171717171717171717100000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffffffffffffffffffffffffffffffffff0000007171717171717171 +717171717171717171717171717171000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffff +ffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00710071000071007100007100007100 +7100007100007100717100ffffffffffffffffffffffffffffffffffffffff0000000000000000 +000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000710071000071007100007100007100 +710000710000710071710000ffffffffffffffffffffffffffffffffffffffff00717171717171 +7171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00007100710071000071007100007100007100 +7100007100007100717100710000ffffffffffffffffffffffffffffffffffff00717171717171 +7171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6000000000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff000071717100710000000000007100007100007100 +00000000000000007171007171710000ffffffffffffffffffffffffffffffff00717171717171 +7171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000717171717100717171717171717171717171717171 +717171717171717171710071717171710000ffffffffffffffffffffffffffff00717171717171 +7171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00007171717171717100717171717171717171717171717171 +7171717171717171717100717171717171710000ffff0000000000000000000000000000000000 +000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0071717171717171717100717171717171717171717171717171 +717171717171717171710071717171717171717100ff0071717171717171717171717171717171 +717171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0071717171717171717100717171717171717171717171717171 +717171717171717171710071717171717171717100ff0071717171717171717171717171717171 +717171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000ff0000000000000000000000000000000000 +000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffff0000000000ffffffffffffffffffff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffff00ffffffff00ffffffffffffffffff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff000000ffffffff00 +0000ffffffff0000ff00ffffffffff00ffffffff00ffffff000000ffffff00ffffff000000ffff +ff00ff0000ffffffff0000ffffffff000000ffffff00ff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ff +ffff00ffff00ffff0000ffffffffff00ffffffff00ffff00ffffff00ffff00ffff0000ffff00ff +ff0000ffff00ffff00ffff00ffff00ffffff00ffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffffffff +ffff00ffff00ffffff00ffffffffff000000000000ffffffffffff00ffff00ffffff00ffff00ff +ff00ffffff00ffff00ffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffffff00 +000000ffff00ffffff00ffffffffff00ffffffff00ffffff00000000ffff00ffffff00000000ff +ff00ffffff00ffff00ffffffffff0000000000ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ff +ffff00ffff00ffffff00ffffffffff00ffffffff00ffff00ffffff00ffff00ffff0000ffff00ff +ff00ffffff00ffff00ffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffff00ff +ff0000ffff00ffffff00ffffffffff00ffffffff00ffff00ffff0000ffff00ffff0000ff0000ff +ff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff000000ffffffff00 +00ff00ffffff00000000ffffffffff0000000000ffffffff0000ff00ffff00ffffff0000ff00ff +ff00ffffff00ffffff0000ffffffff000000ffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff00ffff00ff0000ffffff00ffffff00ff00ffffff00ffffffff00ffffffff00ffffff00 +0000ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff00ffff0000ffff00ffff00ffffff00ffff00ff00ffffffffff00ffffffff00ffff00ff +ffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff00ffff00ffffff00ffff00ffffff00ffff00ff00ffffffffff000000000000ffff00ff +ffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffffffffff00ffffffff00ffff00ff +ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff00ffff00ffffff00ffff00ffffff00ffff00ff00ffffffffff00ffffffff00ffff00ff +ffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff00ffff00ffffff00ffff00ffffff00ffff00ff00ffffffffff00ffffffff00ffff00ff +ffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +000000ff00ffff00ffffff00ffffff00000000ff00ffffff00ffffffff000000000000ffffff00 +0000ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171 +71717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171 +71717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000000000717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000071717171 +71717171717171717171007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007100000000 +00000000000000000000007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007100717171 +71717171717171717100007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000071717171 +71717171717171717100007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000071717171 +71717171717171717171007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71710000000000007171007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007100000000 +00000000000000000071007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6 +c6c6c600000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00000000c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71710071717171007171007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71710000000000007171007100717100ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffff000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171710000 +00000000000000717171007100717100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +00000000000071000000007100717100ffff007171717171000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000007171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171000000007100717100ffff007171717171007171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171007171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffff007171717171007171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171710000007171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffff007171717171007171000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000071000000007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000071000000007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000071000000007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000071000000007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffff007171717171007171007171717171717171717171 +717171717171717171717171717171717171717171717171717171710071007171717171710000 +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffff00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100007171717171 +71717171717171717171007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6000000000000000000000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000007100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +0000000000ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00000000000000000000ffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100717171717171 +71717171717171717171717100717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717100000000000000 +00000000000000000000000000717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171 +71717171717171717171717171717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171 +71717171717171717171717171717100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710000000000 +00000000710000710000710000007100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171007171007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171007171000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000710071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000071717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171000071717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171000071717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6 +00c6c6c6c6c6c600c6c6c6c6c6c6c600c6c6c6c60000c6c6c6c6c6c600c6c6c6c6c6c600c6c6c6 +c6c600c6c6c6c6c6c600c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c600 +c600c6c6c6c6c60000c6c6c6c6c6c600c6c6c6c60000c6c6c6c6c600c600c6c6c6c6c600c6c6c6 +c600c600c6c6c6c6c60000c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffff007171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717171717171717171717171717171717100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c600 +c600c6c6c6c6c600c600c6c6c6c6c600c6c6c600c6c600c6c6c6c600c600c6c6c6c600c6c6c6c6 +c600c600c6c6c6c6c600c600c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710000000000 +00000000710000710000710000007100ffff000000000000000000000000000000000000000000 +0000000000000000007171717171717171717171717171717171717171717171710000007100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c600 +c600c6c6c6c6c600c600c6c6c6c6c600c6c6c600c6c600c6c6c6c600c600c6c6c6c600c6c6c6c6 +c600c600c6c6c6c6c600c600c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00717171717171717171 +71717171717171717171717171717100ffff007171717171717171717171717171007171717171 +7171717171717171007171717171717171717171717171717171717171717171710000007100ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c600c6 +c6c600c6c6c6c600c6c600c6c6c6c600c6c6c600c6c600c6c6c600c6c6c600c6c6c600c6c6c6c6 +00c6c6c600c6c6c6c600c6c600c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710000000000 +00000000710000710000710000007100ffff000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c600c6 +c6c600c6c6c6c600c6c6c600c6c6c600c6c6c600c6c600c6c6c600c6c6c600c6c6c600c6c6c6c6 +00c6c6c600c6c6c6c600c6c6c600c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffffffffffffffffffffffffff00000000717171717171 +717171717171717171717171717171717171717171717100000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c600c6 +c6c600c6c6c6c600c6c6c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c600c6c6c6c6c6 +00c6c6c600c6c6c6c600c6c6c600c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffffffffffffffffffffffffffffffffff000000717171 +7171717171717171717171717171717171717171000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6000000 +00000000c6c6c600c6c6c6c600c6c600c6c600c6c6c6c600c600c6c6c6c6c600c600c6c6c6c600 +000000000000c6c6c600c6c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffffffffffffffffffffffffffffffffffffffff000000 +0000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c600c6c6 +c6c6c600c6c6c600c6c6c6c6c600c600c6c600c6c6c6c600c600c6c6c6c6c600c600c6c6c6c600 +c6c6c6c6c600c6c6c600c6c6c6c6c600c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00710000710071000071 +00007100710000710000710071007100ffffffffffffffffffffffffffffffffffffffffff0071 +71717171717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c600c6c6 +c6c6c600c6c6c600c6c6c6c6c600c600c6c600c6c6c6c600c600c6c6c6c6c600c600c6c6c6c600 +c6c6c6c6c600c6c6c600c6c6c6c6c600c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000710000710071000071 +0000710071000071000071007100710000ffffffffffffffffffffffffffffffffffffffff0071 +71717171717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c600c6c6c6 +c6c6c6c600c6c600c6c6c6c6c6c60000c600c6c6c6c6c6c600c6c6c6c6c6c6c600c6c6c6c600c6 +c6c6c6c6c6c600c6c600c6c6c6c6c6c60000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00007100710000710000000000 +00000000710000710000710000007100710000ffffffffffffffffffffffffffffffffffff0071 +71717171717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000000000c6c600c6c6c6 +c6c6c6c600c6c600c6c6c6c6c6c6c600c600c6c6c6c6c6c600c6c6c6c6c6c6c600c6c6c6c600c6 +c6c6c6c6c6c600c6c600c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00000071717100717171717171717171 +71717171717171717171717171717100717171000000ffffffffffffffffffffffffffffff0071 +71717171717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff000071717171717100717171717171717171 +717171717171717171717171717171007171717171710000ffffff000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000717171717171717100717171717171717171 +7171717171717171717171717171710071717171717171710000ff007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0071717171717171717100717171717171717171 +7171717171717171717171717171710071717171717171717100ff007171717171717171717171 +7171717171717171717171717171717171717171717171717171717100ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000ff000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +0000ffffffffffffffffffffffffffff00ffffffffff00000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffff00ffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffff00ffff000000ffffff000000ffff00ffffffff00ffffffffffffff000000ffff00ff00ff00 +ffffff00ffff000000ffff00ff00ffffffff00ff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +0000ffff00ffffff00ff00ffffff00ff00ffffffffff0000ffffffff00ffffff00ff0000ffff00 +ffffff00ff00ffffff00ff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +00ffffff0000000000ffff00000000ff00ffffffffffffff0000ffff0000000000ff00ffffffff +00ff00ffff0000000000ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ff00ffff00ffffffffff00ffffff00ff00ffffffffffffffffff00ff00ffffffffff00ffffffff +00ff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ff00ffff00ffffff00ff00ffff0000ff00ffffffff00ffffffff00ff00ffffff00ff00ffffffff +ff00ffffff00ffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffff00ffff000000ffffff0000ff00ff00ffffffffff00000000ffffff000000ffff00ffffffff +ff00ffffffff000000ffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6000000c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6000000c6c6c6c600000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff00c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600ffff00000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717171717171717171717171717171717171717171717171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717171717171717171717171717171717171717171717171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000000007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c60000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000c6c6c6c6c600000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000000000c6c6c6c6c60000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007100000000000000000000000000000071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007100717171717171717171717171000071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000071717171717171717171717171000071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000071717171717171717171717171710071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171717171710071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717100000000000071710071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717100717171710071710071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007100000000000000000000000000710071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717100717171710071710071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717100000000000071710071007171 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffff000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffff007171717171717171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffff007171717171717171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171717171710071007171 +00ffff007171717171717171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171000000000000717171710071007171 +00ffff007171717171717171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171710000007171717100007171710071007171 +00ffff007171717171717171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171000000000000710000000071007171 +00ffff007171717171000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000007171717100ffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171710000000071007171 +00ffff007171717171007171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171710000007171717100ffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffff007171717171007171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171710071717171717100ffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffff007171717171007171000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000710071717171717100ffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171710000000071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000710000000071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000710000000071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000717171710071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000717171710071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +717171717171717171717171710071007171717171710000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171717171710071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171717171710071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171717171710071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171717171710071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100007171717171717171717171717171710071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000071007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100717171717171717171717171717171717171007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717100000000000000000000000000000000000000007171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717171717171717171717171717171717171717171717171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717171717171717171717171717171717171717171717171 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710000000000000000007100007100007100000071 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171007171007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171007171000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171007171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171710071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000071717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171000071717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171000071717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171717171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171717171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff007171717171717171717171717171717171717171717171717171717171717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffff000000000000000000000000000000000000000000000000000000000000717171717171 +7171717171717171717171717171717171710000007100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710000000000000000007100007100007100000071 +00ffff007171717171717171717171717171007171717171717171717171717100717171717171 +7171717171717171717171717171717171710000007100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00717171717171717171717171717171717171717171717171 +00ffff007171717171717171717171717171007171717171717171717171717100717171717171 +7171717171717171717171717171717171717171717100ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710000000000000000007100007100007100000071 +00ffff000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffffffffffffffffffffffffff00000000717171717171717171717171717171717171717171 +717171717171717100000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffffffffffffffffffffffffffffffffff000000717171717171717171717171717171717171 +7171717171000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00710000710071000071000071007100007100007100710071 +00ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000710000710071000071000071007100007100007100710071 +0000ffffffffffffffffffffffffffffffffffffffff0071717171717171717171717171717171 +71717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00007100710000710071000071000071007100007100007100710071 +00710000ffffffffffffffffffffffffffffffffffff0071717171717171717171717171717171 +71717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff000071717100710000710000000000000000007100007100007100000071 +007171710000ffffffffffffffffffffffffffffffff0071717171717171717171717171717171 +71717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000717171717100717171717171717171717171717171717171717171717171 +0071717171710000ffffffffffffffffffffffffffff0071717171717171717171717171717171 +71717100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffff00007171717171717100717171717171717171717171717171717171717171717171 +00717171717171710000ffff000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffff0071717171717171717100717171717171717171717171717171717171717171717171 +0071717171717171717100ff007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffff0071717171717171717100717171717171717171717171717171717171717171717171 +0071717171717171717100ff007171717171717171717171717171717171717171717171717171 +7171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffff0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000ff000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 +000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171717171717171717171717171 +717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171717171717171717171717171 +717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171717171717171717171717171 +717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000000000717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000007171717171717171 +717171717171007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff +ff00ffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000710000000000000000 +000000000000007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffff +ff00ffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000710071717171717171 +717171717100007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffff000000ffffff000000ff +ff00ffffffff00ffffffffffffff000000ffff00ff00ff00ffffff00ffff000000ffff00ff00ff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000007171717171717171 +717171717100007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000000000ffff00ffffff00ff00ffffff00 +ff00ffffffffff0000ffffffff00ffffff00ff0000ffff00ffffff00ff00ffffff00ff0000ffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000007171717171717171 +717171717171007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff0000000000ffff00000000 +ff00ffffffffffffff0000ffff0000000000ff00ffffffff00ff00ffff0000000000ff00ffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffff00ffffff00 +ff00ffffffffffffffffff00ff00ffffffffff00ffffffff00ff00ffff00ffffffffff00ffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ff00ffff0000 +ff00ffffffff00ffffffff00ff00ffffff00ff00ffffffffff00ffffff00ffffff00ff00ffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffff000000ffffff0000ff00 +ff00ffffffffff00000000ffffff000000ffff00ffffffffff00ffffffff000000ffff00ffffff +ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171710000 +000000007171007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000710000000000000000 +000000000071007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171710071 +717171007171007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171710000 +000000007171007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffff00000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffff00717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717100000000 +000071717171007100717100ffff00717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717100000000717171 +710000717171007100717100ffff00717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717100000000 +000071000000007100717100ffff00717171717100000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171000000007100717100ffff00717171717100717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717100717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717100717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171710000717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffff00717171717100717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffff00717171717100717100000000000000000000000000000000 +00000000000000000000000000000000000000000000000000710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +007171000000007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +007171000000007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +007171000000007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +007171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +007171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff +00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffff +ff00000000ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000717171717171717171 +717171717171007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000007100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710071717171717171717171 +717171717171717100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710071717171717171717171 +717171717171717100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710071717171717171717171 +717171717171717100717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171710000000000000000000000 +000000000000000000717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171717171717171717171717171 +717171717171717171717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171717171717171717171717171 +717171717171717171717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171717171717171717171717171 +717171717171717171717100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071000000000000000000 +710000710000000000007100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717100717100717171717171717171717171717171 +71717171717171717171717171717171717171717171717100710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717100717100000000000000000000000000000000 +00000000000000000000000000000000000000000000000000710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717100717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171710071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717100710000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000071717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000ff0000ffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff00000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717100710071717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000ff0000ffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000000000 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717100000071717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff0000ffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffff0000ffff0000ff0000 +0000000000ff0000ffffffff0000ffffff0000000000ffffff0000ffffffffffff0000ffffffff +ff0000ffffffff000000ffffffff0000ff0000ff0000ffffff0000ffffffff000000ffffffff00 +00ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ffff0000000000 +0000000000ff0000ffffffff0000ffff00000000000000ffff0000ffffffffffff00000000ffff +ffffffffffff0000000000ffffff0000000000ff0000ffffff0000ffffff0000000000ffffff00 +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ffff000000ffff +ff0000ffffff0000ffffffff0000ffff0000ffffff0000ffff0000ffffffffffffff0000000000 +00ffffffff0000ffffff0000ffff000000ffffff0000ffffff0000ffff0000ffffff0000ffff00 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffff00717171717171717171717171717171717171717171717171 +71717171717171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ffff0000ffffff +ff0000ffffff0000ffffffff0000ffffffffff00000000ffff0000ffffffffffffffffff000000 +0000ffffff00000000000000ffff0000ffffffffff0000ff0000ffffff00000000000000ffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071000000000000000000 +710000710000000000007100ffff00000000000000000000000000000000000000000000000000 +00000000007171717171717171717171717171717171717171717171000000007100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffff0000ffff0000ffffff +ff0000ffffff0000ffffffff0000ffffff000000000000ffff0000ffffffffffffffffffffffff +000000ffff00000000000000ffff0000ffffffffff0000ff0000ffffff00000000000000ffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171717171717171717171717171 +717171717171717171717100ffff00717171717171717171717171717100717171717171717171 +71717171007171717171717171717171717171717171717171717171717171717100ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffff0000ffff0000ffffff +ff0000ffffff0000ffffffff0000ffff000000ffff0000ffff0000ffffffffffff0000ffffffff +ff0000ffff0000ffffffffffffff0000ffffffffff0000ff0000ffffff0000ffffffffffffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071000000000000000000 +710000710000000000007100ffff00000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffff0000ffffff +ff0000ffffff0000ffffff000000ffff0000ffffff0000ffff0000ffffffffffff000000ffffff +000000ffff000000ffff0000ffff0000ffffffffffff000000ffffffff000000ffff0000ffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffffffffffffffffffffffffff0000000071717171717171717171 +7171717171717171717171717171717171717100000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffff0000ffffff +ff00000000ff0000000000000000ffff00000000000000ffff0000ffffffffffffff0000000000 +0000ffffffff0000000000ffffff0000ffffffffffff000000ffffffffff0000000000ffffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffffffffffffffffffffffffffffffffff00000071717171717171 +71717171717171717171717171717171000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffff0000ffffff +ffff000000ffff00000000ff0000ffffff00000000ff0000ff0000ffffffffffffffff00000000 +00ffffffffffff000000ffffffff0000ffffffffffff000000ffffffffffff000000ffffffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffffffffffffffffffffffffffffffffffffffff00000000000000 +00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +710000710071000071007100ffffffffffffffffffffffffffffffffffffffffff007171717171 +717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff007171000071007100007100007100 +71000071007100007100710000ffffffffffffffffffffffffffffffffffffffff007171717171 +717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000007171000071000000000000000000 +710000710000000000007100710000ffffffffffffffffffffffffffffffffffff007171717171 +717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00007171007171717171717171717171717171 +7171717171717171717171007171710000ffffffffffffffffffffffffffffffff007171717171 +717171717171717171717171717100ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff000071717171007171717171717171717171717171 +71717171717171717171710071717171710000ffffffff00000000000000000000000000000000 +00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000717171717171007171717171717171717171717171 +717171717171717171717100717171717171710000ffff00717171717171717171717171717171 +71717171717171717171717171717171717171717171717100ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff007171717171717171007171717171717171717171717171 +717171717171717171717100717171717171717171000000717171717171717171717171717171 +71717171717171717171717171717171717171717171717100ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff +ffffffffffffffffffffffff00ffffffffff00000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff +ffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff +ff000000ffffff000000ffff00ffffffff00ffffffffffffff000000ffff00ff00ff00ffffff00 +ffff000000ffff00ff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff +00ffffff00ff00ffffff00ff00ffffffffff0000ffffffff00ffffff00ff0000ffff00ffffff00 +ff00ffffff00ff0000ffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff +0000000000ffff00000000ff00ffffffffffffff0000ffff0000000000ff00ffffffff00ff00ff +ff0000000000ff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff +00ffffffffff00ffffff00ff00ffffffffffffffffff00ff00ffffffffff00ffffffff00ff00ff +ff00ffffffffff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff +00ffffff00ff00ffff0000ff00ffffffff00ffffffff00ff00ffffff00ff00ffffffffff00ffff +ff00ffffff00ff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff +ff000000ffffff0000ff00ff00ffffffffff00000000ffffff000000ffff00ffffffffff00ffff +ffff000000ffff00ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff000000ffffffff00000000ffffffffffffffffffffffffffffff +ffffffffff00000000ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff +showpage +end +%%EOF +%%EndDocument +end PEND(Figure 1. generic architecture of a virtual serv)192.55 498.101 +Q(er)-.15 E 1.397(The real serv)72 519.701 R 1.398(ers may be interconn\ +ected by high-speed LAN or by geographically dispersed W)-.15 F 3.898 +(AN. The)-1.2 F .579(front-end of the real serv)72 531.701 R .579 +(ers is a load balancer)-.15 F 3.079(,w)-.4 G .579 +(hich schedules requests to the dif)-3.079 F .578(ferent serv)-.25 F +.578(ers and mak)-.15 F(e)-.1 E .509(parallel services of the cluster t\ +o appear as a virtual service on a single IP address.)72 543.701 R .509 +(Scalability is achie)5.509 F -.15(ve)-.25 G(d).15 E .002 +(by transparently adding or remo)72 555.701 R .001 +(ving a node in the cluster)-.15 F 2.501(.H)-.55 G .001(igh a)-2.501 F +-.25(va)-.2 G .001(ilability is pro).25 F .001 +(vided by detecting node or)-.15 F(daemon f)72 567.701 Q +(ailures and recon\214guring the system appropriately)-.1 E(.)-.65 E +.023(The remainder of the paper is or)72 583.301 R -.05(ga)-.18 G .023 +(nized as follo).05 F .023(ws: In Section 2, we discuss the related w) +-.25 F .024(orks. In Section 3,)-.1 F .24 +(we describe the architectures and w)72 595.301 R .24 +(orking principles of virtual serv)-.1 F .24(er via Netw)-.15 F .24 +(ork Address T)-.1 F .24(ranslation and)-.35 F 2.032(virtual serv)72 +607.301 R 2.032(er via IP tunneling, and also discuss their adv)-.15 F +2.033(antages and disadv)-.25 F 2.033(antages. In Section 4, we)-.25 F +.325(describe the four scheduling algorithms that ha)72 619.301 R .625 +-.15(ve b)-.2 H .325(een de).15 F -.15(ve)-.25 G .325 +(loped for Linux virtual serv).15 F(er)-.15 E 2.825(.I)-.55 G 2.825(nS) +-2.825 G .325(ection 5, we)-2.825 F .375(describe the high a)72 631.301 +R -.25(va)-.2 G .375(ilability issues for Linux virtual serv).25 F(er) +-.15 E 5.375(.F)-.55 G(inally)-5.375 E 2.875(,c)-.65 G .376 +(onclusion and future w)-2.875 F .376(ork appear in)-.1 F(Section 6.)72 +643.301 Q EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-3-)282.17 48 Q/F1 16/Times-Bold@0 SF 4 +(2. Related)72 84 R -1.2(Wo)4 G(rks)1.2 E F0 .376(In the client/serv)72 +114 R .376 +(er applications, one end is the client, the other end is the serv)-.15 +F(er)-.15 E 2.875(,a)-.4 G .375(nd there may be a proxy)-2.875 F .988 +(in the middle, such as a proxy serv)72 126 R .988 +(er for web services. Based on this scenario, we can see that there are) +-.15 F(man)72 138 Q 2.812(yw)-.15 G .311 +(ays to dispatch requests to a cluster of serv)-2.912 F .311 +(ers in the dif)-.15 F .311(ferent le)-.25 F -.15(ve)-.25 G 2.811 +(ls. In).15 F .311(general, these serv)2.811 F .311(ers ha)-.15 F -.15 +(ve)-.2 G .125(the same service and the same set of contents. The conte\ +nts are either replicated on each serv)72 150 R(er')-.15 E 2.626(sl)-.55 +G .126(ocal disk,)-2.626 F .87(shared on a netw)72 162 R .87 +(ork \214lesystem, or serv)-.1 F .87(ed by a distrib)-.15 F .87 +(uted \214le system.)-.2 F .87(Existing request dispatching tech-)5.87 F +(niques can be classi\214ed into the follo)72 174 Q(wing cate)-.25 E +(gories:)-.15 E<83>72 189.6 Q/F2 10/Times-Bold@0 SF +(The client-side appr)6.5 E(oach)-.18 E F0(Berk)82 205.2 Q(ele)-.1 E(y') +-.15 E 2.66(sS)-.55 G .16(mart Client)-2.66 F/F3 7/Times-Roman@0 SF(1) +-4.1 I F0 .16(suggests that the service pro)2.66 4.1 N .16 +(vide an applet running at the client side. The applet)-.15 F(mak)82 +217.2 Q 1.453(es requests to the cluster of serv)-.1 F 1.453 +(ers to collect load information of all the serv)-.15 F 1.453 +(ers, then chooses a)-.15 F(serv)82 229.2 Q .061 +(er based on that information and forw)-.15 F .061 +(ards requests to that serv)-.1 F(er)-.15 E 5.061(.T)-.55 G .062 +(he applet tries other serv)-5.061 F .062(ers when)-.15 F 1.168 +(it \214nds the chosen serv)82 241.2 R 1.168(er is do)-.15 F 3.668 +(wn. Boston)-.25 F(Uni)3.668 E -.15(ve)-.25 G 1.168(rsity de).15 F -.15 +(ve)-.25 G 1.167(loped dynamic serv).15 F 1.167(er selection techniques) +-.15 F F3(2)-4.1 I F0 1.198(using bandwidth probing on the client side,\ + in which the maximum possible bandwidth along a gi)82 253.2 R -.15(ve) +-.25 G(n).15 E .859(path and the current congestion along a path are es\ +timated through probing. Ho)82 265.2 R(we)-.25 E -.15(ve)-.25 G 1.658 +-.4(r, t).15 H .858(hese client-side).4 F .29 +(approaches are not client-transparent, the)82 277.2 R 2.79(yr)-.15 G +.29(equires modi\214cation of client applications, so the)-2.79 F 2.79 +(yc)-.15 G .29(annot be)-2.79 F .284 +(applied to all TCP/IP services. Moreo)82 289.2 R -.15(ve)-.15 G 1.084 +-.4(r, t).15 H(he).4 E 2.784(yw)-.15 G .283 +(ill potentially increase netw)-2.784 F .283(ork traf)-.1 F .283 +(\214c by e)-.25 F .283(xtra querying)-.15 F(or probing.)82 301.2 Q<83> +72 316.8 Q F2(The ser)6.5 E -.1(ve)-.1 G -.37(r-).1 G +(side Round-Robin DNS appr).37 E(oach)-.18 E F0 1.15 +(The NCSA scalable web serv)82 332.4 R 1.151 +(er is the \214rst prototype of a scalable web serv)-.15 F 1.151 +(er by using of the Round-)-.15 F 1.279(Robin DNS approach.)82 344.4 R +F3 1.279(3, 4, 5)-4.1 J F0 1.279(The RRDNS serv)3.779 4.1 N 1.279 +(er maps a single name to the dif)-.15 F 1.279(ferent IP addresses in a) +-.25 F 1.352(round-robin manner so that the dif)82 356.4 R 1.352 +(ferent clients will access the dif)-.25 F 1.352(ferent serv)-.25 F +1.352(ers in the cluster for the)-.15 F .265(ideal situation. In this w) +82 368.4 R(ay)-.1 E 2.764(,t)-.65 G .264(he load is distrib)-2.764 F +.264(uted among the serv)-.2 F .264(ers. Ho)-.15 F(we)-.25 E -.15(ve) +-.25 G 1.064 -.4(r, d).15 H .264(ue to the caching nature).4 F 1.203(of\ + clients and hierarchical DNS system, it easily leads to dynamic load i\ +mbalance among the serv)82 380.4 R(ers,)-.15 E .324 +(thus it is not easy for a serv)82 392.4 R .324 +(er to handle its peak load. The TTL\(T)-.15 F .324(ime T)-.35 F 2.824 +(oL)-.8 G -2.15 -.25(iv e)-2.824 H 2.824(\)v).25 G .323 +(alue of a name mapping)-3.074 F .869 +(cannot be well chosen at RR-DNS, with small v)82 404.4 R .87 +(alues the RR-DNS will be a bottleneck, and with high)-.25 F -.25(va)82 +416.4 S .025(lues the dynamic load imbalance will get e).25 F -.15(ve) +-.25 G 2.525(nw).15 G .025(orse. Ev)-2.625 F .025(en the TTL v)-.15 F +.025(alue is set with zero, the schedul-)-.25 F 2.508 +(ing granularity is host-based, dif)82 428.4 R 2.509 +(ferent users' access pattern may lead to dynamic load imbalance,)-.25 F +.686(because some people may pull lots of pages from the site, and othe\ +rs may just surf a fe)82 440.4 R 3.185(wp)-.25 G .685(ages and go)-3.185 +F -2.3 -.15(aw a)82 452.4 T 1.94 -.65(y. M).15 H(oreo).65 E -.15(ve)-.15 +G 1.44 -.4(r, i).15 H 3.14(ti).4 G 3.14(sn)-3.14 G .64 +(ot so reliable, when a serv)-3.14 F .64(er node f)-.15 F .641 +(ails, the clients who maps the name to the IP)-.1 F .612 +(address will \214nd the serv)82 464.4 R .612(er is do)-.15 F .612 +(wn, and the problem still e)-.25 F .612(xists e)-.15 F -.15(ve)-.25 G +3.111(ni).15 G 3.111(ft)-3.111 G(he)-3.111 E 3.111(yp)-.15 G .611 +(ress "reload" or "refresh")-3.111 F -.2(bu)82 476.4 S +(tton in their bro).2 E(wsers.)-.25 E<83>72 492 Q F2(The ser)6.5 E -.1 +(ve)-.1 G -.37(r-).1 G(side application-le).37 E -.1(ve)-.15 G 2.5(ls).1 +G(cheduling appr)-2.5 E(oach)-.18 E F0(EDDIE)82 507.6 Q F3(6)-4.1 I F0 +2.87(,R)2.87 4.1 O -2.15 -.25(ev e)-2.87 H(rse-proxy).25 E F3(7)-4.1 I +F0 2.87(,p)2.87 4.1 O(WEB)-2.87 E F3(8)-4.1 I F0 .37(and SWEB)2.87 4.1 N +F3(9)-4.1 I F0 .37(use the application-le)2.87 4.1 N -.15(ve)-.25 G 2.87 +(ls).15 G .37(cheduling approach to b)-2.87 F .37(uild a)-.2 F .44 +(scalable web serv)82 519.6 R(er)-.15 E 2.94(.T)-.55 G(he)-2.94 E 2.94 +(ya)-.15 G .44(ll forw)-2.94 F .439(ard the HTTP requests to the dif)-.1 +F .439(ferent web serv)-.25 F .439(ers in the cluster)-.15 F 2.939(,t) +-.4 G(hen)-2.939 E .929 +(get the results, and \214nally return them to the clients.)82 531.6 R +(Ho)5.929 E(we)-.25 E -.15(ve)-.25 G 1.73 -.4(r, t).15 H .93 +(his approach requires to establish tw).4 F(o)-.1 E .621(TCP connection\ +s for each request, one is between the client and the load balancer)82 +543.6 R 3.12(,t)-.4 G .62(he other is between)-3.12 F .518 +(the load balancer and the serv)82 555.6 R(er)-.15 E 3.018(,t)-.4 G .518 +(he delay is high. And, the o)-3.018 F -.15(ve)-.15 G .519 +(rhead of dealing the HTTP requests and).15 F .143 +(replies in the application-le)82 567.6 R -.15(ve)-.25 G 2.643(li).15 G +2.643(sh)-2.643 G .143(igh too, so the application-le)-2.643 F -.15(ve) +-.25 G 2.642(ll).15 G .142(oad balancer will be a ne)-2.642 F 2.642(wb) +-.25 G(ottleneck)-2.642 E(soon when the number of serv)82 579.6 Q +(er nodes increases.)-.15 E<83>72 595.2 Q F2(The ser)6.5 E -.1(ve)-.1 G +-.37(r-).1 G(side IP-le).37 E -.1(ve)-.15 G 2.5(ls).1 G(cheduling appr) +-2.5 E(oaches)-.18 E F0(Berk)82 610.8 Q(ele)-.1 E(y')-.15 E 2.717(sM) +-.55 G(agicRouter)-2.717 E F3(10)-4.1 I F0 .217(and Cisco')2.717 4.1 N +2.717(sL)-.55 G(ocalDirector)-2.717 E F3(11)-4.1 I F0 .217(use the Netw) +2.717 4.1 N .217(ork Address T)-.1 F .218(ranslation approach to)-.35 F +(mak)82 622.8 Q 3.309(ep)-.1 G .809(arallel service on dif)-3.309 F .809 +(ferent serv)-.25 F .809 +(er to appear as a virtual service on a single IP address. The load)-.15 +F 1.573(balancer changes the destination address of the request pack)82 +634.8 R 1.574(ets and forw)-.1 F 1.574(ards the chosen serv)-.1 F(er) +-.15 E 4.074(,t)-.4 G(hen)-4.074 E 1.346 +(change the source address of the reply pack)82 646.8 R 1.346 +(ets back to the original destination address. Ho)-.1 F(we)-.25 E -.15 +(ve)-.25 G 2.146 -.4(r, t).15 H(he).4 E .972(MagicRouter doesn')82 658.8 +R 3.472(ts)-.18 G(urvi)-3.472 E 1.272 -.15(ve t)-.25 H 3.472(ob).15 G +-5.971 3.472(ea u)-3.472 H .973 +(seful system for other users, the LocalDirector is too e)-3.472 F +(xpensi)-.15 E -.15(ve)-.25 G(,).15 E .959(and the)82 670.8 R 3.459(yo) +-.15 G .959(nly support part of TCP protocol. This approach w)-3.459 F +.958(as well implemented in the Linux virtual)-.1 F(serv)82 682.8 Q(er) +-.15 E 2.5(,a)-.4 G(nd it will be discussed in detail in the follo)-2.5 +E(wing sections.)-.25 E(IBM')82 698.4 Q 4.284(sT)-.55 G 1.784(CP router) +-4.284 F F3(12)-4.1 I F0 1.784(uses the modi\214ed Netw)4.284 4.1 N +1.785(ork Address T)-.1 F 1.785(ranslation approach to b)-.35 F 1.785 +(uild scalable web)-.2 F(serv)82 710.4 Q 1.324(er on IBM scalable P)-.15 +F 1.324(arallel SP-2 system.)-.15 F 1.324 +(The TCP router changes the destination address of the)6.324 F 1.28 +(request pack)82 722.4 R 1.28(ets and forw)-.1 F 1.28 +(ards the chosen serv)-.1 F(er)-.15 E 3.78(,t)-.4 G 1.28(hat serv)-3.78 +F 1.28(er is modi\214ed to put the TCP router address)-.15 F EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-4-)282.17 48 Q 1.465(instead of its o)82 84 R +1.465(wn address as the source address in the reply pack)-.25 F 1.464 +(ets. The adv)-.1 F 1.464(antage of the modi\214ed)-.25 F .441 +(approach is that the TCP router a)82 96 R -.2(vo)-.2 G .442(ids re).2 F +.442(writing of the reply pack)-.25 F .442(ets, the disadv)-.1 F .442 +(antage is that it requires)-.25 F(modi\214cation of the k)82 108 Q +(ernel code of e)-.1 E -.15(ve)-.25 G(ry serv).15 E(er in the cluster) +-.15 E(.)-.55 E(ONE-IP)82 123.6 Q/F1 7/Times-Roman@0 SF(13)-4.1 I F0 .12 +(is another IP-le)2.62 4.1 N -.15(ve)-.25 G 2.62(ls).15 G .12 +(cheduling approach. It requires that all serv)-2.62 F .12(ers ha)-.15 F +.42 -.15(ve t)-.2 H .12(heir o).15 F .12(wn IP addresses)-.25 F 1.081 +(in a netw)82 135.6 R 1.081(ork and the)-.1 F 3.581(ya)-.15 G 1.082 +(re all con\214gured with the same IP address on the IP alias interf) +-3.581 F 1.082(aces. T)-.1 F 1.282 -.1(wo d)-.8 H(is-).1 E .301(patchin\ +g techniques are used, one is based on a central dispatcher routing IP \ +pack)82 147.6 R .301(ets to dif)-.1 F .301(ferent serv)-.25 F(ers,)-.15 +E .908(the other is based on pack)82 159.6 R .909 +(et broadcasting and local \214ltering. The adv)-.1 F .909 +(antage is that the re)-.25 F .909(writing of the)-.25 F 1.445 +(reply pack)82 171.6 R 1.445(ets can be a)-.1 F -.2(vo)-.2 G 1.445 +(ided. The disadv).2 F 1.444 +(antage is it can be applied to all operating systems because)-.25 F +1.431(some operating systems will shutdo)82 183.6 R 1.431(wn the netw) +-.25 F 1.432(ork interf)-.1 F 1.432 +(ace when detecting IP address collision, the)-.1 F +(local \214ltering also requires the modi\214cation of the k)82 195.6 Q +(ernel code of e)-.1 E -.15(ve)-.25 G(ry serv).15 E(er)-.15 E(.)-.55 E +/F2 16/Times-Bold@0 SF 4(3. V)72 228.6 R(irtual Ser)-.592 E -.16(ve)-.16 +G 4(rA).16 G -.288(rc)-4 G(hitectur).288 E(es)-.288 E F0 .167 +(Linux virtual serv)72 258.6 R(er)-.15 E F1(14)-4.1 I F0 .167(is no) +2.667 4.1 N 2.666(wi)-.25 G .166(mplemented in tw)-2.666 F 2.666(ow)-.1 +G .166(ays. One is virtual serv)-2.766 F .166(er via Netw)-.15 F .166 +(ork Address T)-.1 F(ransla-)-.35 E .132 +(tion; the other is virtual serv)72 270.6 R .132 +(er via IP tunneling. The follo)-.15 F .133(wing tw)-.25 F 2.633(os)-.1 +G .133(ubsections e)-2.633 F .133(xplain their dif)-.15 F .133 +(ferent archi-)-.25 F .38(tectures and w)72 282.6 R .38 +(orking principles respecti)-.1 F -.15(ve)-.25 G(ly).15 E 2.88(.T)-.65 G +.38(he third subsection discusses their adv)-2.88 F .38 +(antages and disadv)-.25 F(an-)-.25 E .404(tages. The virtual serv)72 +294.6 R .404(er code is no)-.15 F 2.904(wd)-.25 G -2.15 -.25(ev e)-2.904 +H .404(loped based on Linux IP Masquerading code in the Linux k).25 F +(ernel)-.1 E .63(2.0, and some of Ste)72 306.6 R -.15(ve)-.25 G 3.13(nC) +.15 G(lark)-3.13 E(e')-.1 E 3.13(sp)-.55 G .63(ort forw)-3.13 F .63 +(arding code is reused. It supports both TCP and UDP services,)-.1 F +1.441(such as HTTP)72 318.6 R 3.941(,P)-1.11 G(roxy)-3.941 E 3.941(,D) +-.65 G 1.441(NS and so on. F)-3.941 F 1.441 +(or protocols that transmit IP addresses and/or port numbers as)-.15 F +.736(application data, additional code is need to handle it. Currently \ +FTP w)72 330.6 R .736(as supported, others require adding)-.1 F(ne)72 +342.6 Q 2.5(wh)-.25 G(andling code.)-2.5 E/F3 15/Times-Bold@0 SF 3.75 +(3.1. V)72 372.6 R(irtual Ser)-.555 E -.15(ve)-.15 G 3.75(rv).15 G(ia N) +-3.75 E -1.425(AT)-.3 G F0 .565(Due to the shortage of IP address in IP\ +v4 and some security reasons, more and more netw)72 395.4 R .566 +(orks use pri)-.1 F -.25(va)-.25 G(te).25 E .724 +(IP addresses which cannot be used outside the netw)72 407.4 R .723 +(ork \(or in the Internet\). The need for netw)-.1 F .723(ork address) +-.1 F .354(translation arises when hosts in internal netw)72 419.4 R +.354(orks w)-.1 F .355 +(ant to access the Internet or to be accessed in the Inter)-.1 F(-)-.2 E +1.064(net. Netw)72 431.4 R 1.064 +(ork address translation relies on the f)-.1 F 1.064 +(act that the headers for Internet protocols can be adjusted)-.1 F .255 +(appropriately so that clients belie)72 443.4 R .555 -.15(ve t)-.25 H +(he).15 E 2.755(ya)-.15 G .255(re contacting one IP address, b)-2.755 F +.255(ut serv)-.2 F .255(ers at dif)-.15 F .255(ferent IP addresses)-.25 +F(belie)72 455.4 Q .519 -.15(ve t)-.25 H(he).15 E 2.719(ya)-.15 G .219 +(re contacted directly by the clients.)-2.719 F .219 +(This feature can be used to b)5.219 F .219(uild a virtual serv)-.2 F +(er)-.15 E 2.719(,i)-.4 G .218(.e. par)-2.719 F(-)-.2 E +(allel services at the dif)72 467.4 Q(ferent IP addresses can appear as\ + a virtual service on a single IP address via N)-.25 E -1.02 -1.11(AT .) +-.35 H .539(The architecture of virtual serv)72 495 R .539(er via N)-.15 +F 2.759 -1.11(AT i)-.35 H 3.039(si)1.11 G .54 +(llustrated in Figure 2. The load balancer and real serv)-3.039 F .54 +(ers are)-.15 F .547(interconnected by a switch or a hub)72 507 R 3.046 +(.T)-.4 G .546(he real serv)-3.046 F .546 +(ers usually run the same service and the)-.15 F 3.046(yh)-.15 G -2.25 +-.2(av e)-3.046 H .546(the same)3.246 F .644 +(set of contents. The contents are either replicated on each serv)72 519 +R(er')-.15 E 3.145(sl)-.55 G .645(ocal disk, shared on a netw)-3.145 F +.645(ork \214lesys-)-.1 F .444(tem, or serv)72 531 R .444 +(ed by a distrib)-.15 F .444(uted \214le system \(such as AFS or COD)-.2 +F .443(A\). The load balancer dispatched requests)-.4 F(to dif)72 543 Q +(ferent real serv)-.25 E(ers via N)-.15 E -1.02 -1.11(AT .)-.35 H EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-5-)282.17 48 Q 14 14 360 609 -335.764 568 108 +419.764 PBEGIN +%%BeginDocument: figure2.ps +%%Creator: GIMP PostScript file plugin V 1.04 by Peter Kirchgessner +%%Title: /home/wensong/linuxexpo/figure2.ps +%%CreationDate: Thu Mar 4 20:30:26 1999 +%%DocumentData: Clean7Bit +%%Pages: 1 +%%BoundingBox: 14 14 623 582 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +5 dict begin +% Translate for offset +14.173228 14.173228 translate +% Translate to begin of first scanline +0.000000 566.929134 translate +608.160344 -566.929134 scale +% Variable to keep one line of raster data +/scanline 649 1 mul string def +% Image geometry +649 605 8 +% Transformation matrix +[ 649 0 0 605 0 0 ] +{ currentfile scanline readhexstring pop } +image +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff000000000000000000000000000000000000 +00000000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff000000000000000000000000000000000000 +00000000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff000000000000000000000000000000000000 +000000000000000000000000000000000000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff000000000000000000000000000000000000 +000000000000000000000000000000000000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff000000000000000000000000000000000000 +000000000000000000000000000000000000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff000000000000000000000000000000000000 +000000000000000000000000000000000000ffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffff000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff +ff00000000000000000000000000000000000000000000000000000000ff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffff0000ffff00000000ff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff +ff00ffffff00000000000000000000000000ffffff0000ffff00000000ff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffff00000000000000000000000000ffffff0000000000000000ff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff000000000000000000000000000000000000000000ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffff00000000000000ffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00000000000000000000000000000000000000ff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffff00ffffffffff00ffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffff00000000000000ffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff000000000000000000000000000000000000000000ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff000000000000000000000000000000000000000000ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffff000000 +ffffff000000ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffff +00ff00ffffff00ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffff0000ff +ffff0000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffffffff00 +ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ff00ffffff +00ff00ffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00000000ffffff000000 +ffffff000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00000000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000 +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00000000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c600000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c60000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +0000ffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6 +c6c6000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +000000c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c600c600c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c600c6c600c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c600c6000000c6c600000000c6c6c6000000c6c6c6c600c60000c600c6000000 +c6c6c6c6c6000000c6c6c600000000c6c600c6c600c6c600c6000000c6c600000000c600c60000 +c6c6c600000000c6c6c600c6000000c6c6c6c6c6000000c6c6c600000000c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c60000c6c6c600c6c600c6c6c6c600c6c6c600c6c6c60000c6c6c60000c6c6c6 +00c6c6c600c6c6c600c6c6c600c6c6c6c600c6c600c6c60000c6c6c600c6c600c6c6c60000c6c6 +c6c600c6c6c6c600c6c60000c6c6c600c6c6c600c6c6c600c6c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c6c6c6 +00c6c600c6c6c6c6c600c6c600c6c6c6c600c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6 +c600c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c6c6c6 +00c6c600c6c6c6c6c600c6c600c6c6c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6 +c6c6c6c6c6000000c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600000000000000c6c600c6c6c6c600c6c6c6c6 +00c6c600000000000000c6c600c6c6c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6 +c6c6000000c6c600c6c600c6c6c6c600c6c600000000000000c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c6c6c6c6c600c6c6c6c600c6c6c6c6 +00c6c600c6c6c6c6c6c6c6c600c6c6c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6 +c600c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c6c6c6 +00c6c600c6c6c6c6c600c6c600c6c6c600c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6 +c600c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c6c600c6c6c600c6c6c600c6c6c6c600c6c6c6c6 +00c6c6c600c6c6c600c6c6c600c6c600c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600c6c6c6 +c600c6c6c6c60000c6c600c6c6c6c600c6c6c600c6c6c600c6c6c600c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600c6c600c6c6c6c600c6c6000000c6c6c6000000c6c6c6c600c6c6c6c600c6c6c6c6 +00c6c6c6c6000000c6c6c6c600000000c6c6c6c600c6c600c6c6c6c600c6c6000000c600c6c6c6 +c6c600000000c600c6c600c6c6c6c600c6c6c6c6000000c6c6c6c6000000c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000000000ffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000000000c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000000000ffffffffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 +0000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +000000000000000000000000000000ffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffff000000ffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffff00ffff0000 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffffffffff00ffff00ff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffff00ffff00ff +ffff00ff00ff00ffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffff00 +ff00000000ffffff0000ff00ffffff000000ff00ff0000ffffff000000ffffffffff00ff00ffff +000000ffffff0000ff00ff00ffffff00ffff000000ffffff000000ff000000ffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffff00ffff00ff +ffff00ff0000ffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00 +ff00ffffff00ff00ffff0000ffffffff00ffff0000ffff00ff00ffffff00ffffffff0000ffff00 +ffffff00ff00ffff0000ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffff00ffffff00ffffffffffff00ffff0000 +0000ffff00ffffff00ffffff00ff00ffffffffff0000000000ffff0000ffffffff0000ffffff00 +ff00ffffff00ff00ffffff00ffffffff00ffff00ffffff00ff0000000000ffffffff00ffffff00 +00000000ff00ffffff00ff00ffffff00ff0000000000ffff0000ffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffff000000ffffffffffffff00ffff00ff +ffffffff00ffffff00ffffff00ff00ffffffffff00ffffffffffffffff00ffffffffff00ffff00 +ff00ffffff00ff00ffffff00ffffffff00ffff00ffffff00ff00ffffffffffffffff00ffffff00 +ffffffffff00ffffff00ff00ffffff00ff00ffffffffffffffff00ffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffff00ff +ffffffff00ffffff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00ffffff00ff00 +ff00ffffff00ff00ffff0000ffffffff00ffff00ffffff00ff00ffffff00ffffffff00ffffff00 +ffffff00ff00ffff0000ff00ffff0000ff00ffffff00ff00ffffff00ff00ffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffffff00ff +ffffffff00ffffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffff00 +ff00ffffff00ffff0000ff00ffffffff0000ff00ffffff00ffff000000ffffffffff00ffffffff +000000ffffff0000ff00ffff0000ff00ffff000000ffffff000000ffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffff000000c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff +ffffffffff0000000000000000000000000000000000000000000000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c600000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c600000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff000000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff0000000000000000000000000000000000000000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00000000000000000000000000000000000000000000000000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00000000000000000000000000000000000000000000000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffff000000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000ff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000ffffffffffffffffffffffff00ff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000ffffffffffffffffffffffffff000000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffff000000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff0000000000ffffff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000ffff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff00ffffff00ffffff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff0000000000ffffff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffff000000000000000000ffffffff0000ffff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffff000000000000ffffffffff0000ffff00ffffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffff000000ff0000ffff00ffffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ff000000ff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ff000000ff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ff000000ff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff0000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000000000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff0000000000000000000000000000000000000000ffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff000000ff0000ff0000ff000000000000000000ff0000ff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff000000ff0000ff0000ff000000000000000000ff0000ff00ffffff0000000000 +00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff +ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff000000ff0000ff0000ff000000000000000000ff0000ff00ffffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffffffffffffff +ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffffffffffffff +ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffffffffffffff +ffffffffffffffffffffffffff0000000000000000000000000000000000000000000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ff00ff000000ff0000ff0000ff000000000000000000ff0000ff00ff0000ffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff0000ffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff0000ff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00 +00ffffff0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ff0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ff0000000000000000000000000000000000000000000000000000000000000000000000 +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffff000000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffff0000ffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffff00ffffffffffff00ffffffffffffff00ffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffff00ffffffffff0000ffffffffffffffff00ffff +00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffff00ff00ffffffffffffffff00ffff +00ffffffff00ffff000000ffffff0000ff00ff00ffffff00ffff000000ffffff000000ff000000 +ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffff00ffffffffff0000 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffff00ffffffffffffffff00ffff +0000000000ffff00ffffff00ff00ffff0000ff00ffffff00ff00ffffff00ff00ffffff00ff00ff +ff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ffffffff00ffffffffffffffffffffffffff00ffffffff00ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffff00ffffffffffffffffff00ff +00ffff00ffffff0000000000ff00ffffff00ff00ffffff00ff0000000000ffff0000ffffff00ff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ffffffff00ffff000000ffffff000000ffff00ffffffff00ffff +ffffffffff000000ffff00ff00ff00ffffff00ffff000000ffff00ff00ffffffff00ff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffff00ffffffffffffffffff00ff +00ffffff00ffff00ffffffffff00ffffff00ff00ffffff00ff00ffffffffffffffff00ffff00ff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffff0000000000ffff00ffffff00ff00ffffff00ff00ffffffffff0000 +ffffffff00ffffff00ff0000ffff00ffffff00ff00ffffff00ff0000ffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffff00ffffffffffffffffff00ff +00ffffff00ffff00ffffff00ff00ffff0000ff00ffff0000ff00ffffff00ff00ffffff00ff00ff +ff00ffffff00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffff00ffff00ffffff0000000000ffff00000000ff00ffffffffffffff +0000ffff0000000000ff00ffffffff00ff00ffff0000000000ff00ffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffff00ffffffffffffffff00ffff +00ffffffff00ffff000000ffffff0000ff00ffff0000ff00ffff000000ffffff000000ffff0000 +ffff000000ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffff00ffffff00ffff00ffffffffff00ffffff00ff00ffffffffffffff +ffff00ff00ffffffffff00ffffffff00ff00ffff00ffffffffff00ffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffff00ffffff00ffff00ffffff00ff00ffff0000ff00ffffffff00ffff +ffff00ff00ffffff00ff00ffffffffff00ffffff00ffffff00ff00ffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffff00ffffffff00ffff000000ffffff0000ff00ff00ffffffffff0000 +0000ffffff000000ffff00ffffffffff00ffffffff000000ffff00ffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffff00000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000000000000000000000000000000000000000000000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff000000000000000000000000000000000000000000ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000ff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000ffffffffffffffffffffffff00ff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000ffffffffffffffffffffffffff0000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffff0000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00000000ffffffffffffffff00ffffffffffffffffffff +ffffffffff00ffffffffffffff00ff00ffffffffffffffffffffffffffffffffffff0000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff +ffffffffffffffffffffffffffffff00ffffffff00ffffffffffffff00ffffffffffffffffffff +ffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00 +ffffffffffffffffffffffffffffff00ffffffffffffff000000ffff00ff0000ffffff000000ff +ffff0000ff00ff00ffffff00ff00ff00ff00000000ffffff0000ff00ffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +0000ffffffffffffffffffffffffffff0000ffffffff00ffffff00ff0000ffff00ff00ffffff00 +ff00ffff0000ff00ffffff00ff00ff00ff00ffffff00ff00ffff0000ffffffffffff0000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffff0000ffff00ffffffffff00ffffff00ff0000000000 +ff00ffffff00ff00ffffff00ff00ff00ff00ffffff00ff00ffffff00ffffffffff00ff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff000000000000ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffff00ff00ffffffffff00ffffff00ff00ffffffff +ff00ffffff00ff00ffffff00ff00ff00ff00ffffff00ff00ffffff00ffffffff00ffffff0000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff00ffffffff00ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffffff +ffffff00ffffffffffffffffffffff00ffffffff00ff00ffffff00ff00ffffff00ff00ffffff00 +ff00ffff0000ff00ffff0000ff00ff00ff00ffffff00ff00ffff0000ffffffff00ffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffff +ffffff00ffffffffffffffffffffffff00000000ffffff000000ffff00ffffff00ffff000000ff +ffff0000ff00ffff0000ff00ff00ff00ff00ffffff00ffff0000ff00ffffffffff000000ff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff00ffffffff00ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff000000000000ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffff00000000ffffffffff00ffffff0000000000ffffffffffffffffffffffffffff00ff00ffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffff00ffffffffffffffff00ffffff00ffffffff00ffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff0000000000ffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00ffffffffffffffffffff00ffff00ffffffff00ffff000000ffff00ff0000ffff00ff00ffff +000000ffffff000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffff000000000000ffffffffff00ff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00000000ffffffffffffff00ffff0000000000ffff00ffffff00ff0000ffff00ff00ff00ff00 +ffffff00ff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffff00000000000000000000ffffff00ff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffff00ffffffffffffff00ff00ffff00ffffff0000000000ff00ffffff00ff00ff00ff00 +00000000ffff0000ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffff00ffffffff00ff00ffff000000ffff00ffffff00ffffff00ff00ff00ff00000000ff00ff00 +000000ffffff0000ff00ffffffff00ff0000ffffff000000ffffff000000ffff00ffff00ffff00 +0000ff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffff000000000000ff0000000000ff00ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffff00ffffffffffffff00ff00ffffff00ffff00ffffffffff00ffffff00ff00ff00ff00 +ffffffffffffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffff00ffffffff0000ffff00ffffff00ff00ffff00ff00ffff00ff0000ffff00ff00ffff00ff00 +ffffff00ff00ffff0000ffffffff0000ffff00ff00ffffff00ff00ffffff00ff00ff00ffff00ff +ffff00ff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffff0000000000ff00ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ff00ffffff00ffffffffffffff00ff00ffffff00ffff00ffffff00ff0000ffff00ff00ff00ff00 +ffffff00ff00ffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +0000ffffffffff00ffffff0000000000ffff00ff00ff00ff00ffff00ffffff00ff00ffff00ff00 +ffffff00ff00ffffff00ffffffff00ffffff00ffff00000000ff00ffffffffff0000ffffff0000 +000000ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffff000000ffffffffffffff00ffff00ffffffff00ffff000000ffff00ff0000ffff00ff00ffff +000000ffffff000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff0000 +ffffffffffffff00ffffff00ffffffffffff00ff00ff00ff00ffff00ffffff00ff00ffff00ff00 +ffffff00ff00ffffff00ffffffff00ffffff00ff00ffffff00ff00ffffffffff00ff00ffff00ff +ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff +ffffffffffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ff00ffff00ff00 +ffffff00ff00ffff0000ffffffff0000ffff00ff00ffff0000ff00ffffff00ff00ff00ffff00ff +ffff00ff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffff000000ffffffff00ffffff00ffffff00ffffff00ff0000ff00ff00 +ffffff00ffff0000ff00ffffffff00ff0000ffffff0000ff00ffff000000ffff00ffff00ffff00 +0000ffff0000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffff0000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ff0000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ff0000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000000000000000000000000000000000000000ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff000000ff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ff000000000000000000000000000000ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ff00ffffffffffffffffffffffff0000ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000ffffffffffffffffffffffffff0000ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000ffffffffffffffffffffffffffff00ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000 +0000000000000000ff000000000000ff00000000000000000000000000000000ff000000000000 +ff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00000000ffffff +00000000ffffff0000000000ffff0000000000ffffff00000000ffffff0000000000ffff000000 +0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff000000000000000000000000000000000000000000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffff000000000000ffff00ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffff00ffffffff00ffff00ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff000000ff0000ff0000ff000000000000000000ff0000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ff00000000000000000000000000ff00ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffff000000000000ffff00ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffff000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffff000000000000ffffffff00ff00ffff00ffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffff00000000000000000000ffffff00ff00ffff00ffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffff000000000000ff00000000ff00ffff00ffff00ffffffffff000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffffffffffffff00000000ff00ffff00ffff00ffffffffff000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffff00ffffffffff000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffff0000000000 +00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff +ffffffffffffffffff00000000ff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffff000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff000000ff0000ff0000ff000000000000000000ff0000ffff00ffff00ffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffff00000000ff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff000000000000ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000ffff00000000ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000000000000000000000ffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff000000ff0000ff0000ff000000000000000000ff0000ffff00ffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000ffff00000000ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00000000000000000000ffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffffffffffffff +ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000ffff00000000ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffffffffffffff +ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000ffffffffff00ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000000000000000000000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ffffffffffffff +ffffffffffffffffffffffffff0000000000000000000000000000000000000000000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000ffffffffff00ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff0000ffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ff00ff00ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ffff00ff0000ffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffff00000000000000000000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffff00ff000000ff0000ff0000ff000000000000000000ff0000ffff00ffffff0000ffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffff0000000000000000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ffffff +00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffffff00ffffff00ffff00ffff +ff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff0000 +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000ffffffffff00ff +ffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000ffff00000000 +00ffff0000000000ffffff00000000ffffff0000000000ffff0000000000ffffff00000000ffff +ff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +0000ffff0000000000000000000000000000000000000000000000000000000000000000000000 +000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ff0000000000000000000000000000000000000000000000000000000000000000000000 +000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff000000000000000000000000000000000000ff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffff00ff00ffffffffff00ffffffffffff +ffffffffffffffff00ffffffff00ff00000000ffffffffffffffff00ffffffffffffffff00ffff +ffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffff00ffffffffffff +ffffffffffffffff00ffffffff00ff00ffffff00ffffffffffff00ff00ffffffffffffff00ffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff00000000000000ffff +ffff00000000000000ffffffff00000000000000ffffffff00000000000000ffffffff00000000 +000000ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ff00ff00000000ff00ffffff +00ffff000000ffff00ffffffff00ff00ffffff00ffffffffffff00ff00ffffffff0000ff00ffff +0000ff00ff00ff00ffff000000ffffff000000ffffff000000ffffffffffffffffffffffff00ff +ffff00ffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ff0000ffff00ffff00ffffff +00ff00ffffff00ff00ffffffff00ff00ffffff00ffffffffffff00ff00ffffff00ffff0000ff00 +ffff0000ff0000ffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffffffffff00ff +ffff0000000000000000000000000000000000000000ffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff00ffffffffff0000 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ff00ffffff00ffff00ffffff +00ffff00000000ff00ffffffff00ff00000000ffffffffffff00ffffff00ffff00ffffff00ff00 +ffffff00ff00ffffff0000000000ffff0000ffffffff0000ffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffff00ffffffff00ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ff00ffffff00ff00ffffff00ffff00ffffff +00ff00ffffff00ff00ffffffff00ff00ffffffffffffffffff0000000000ffff00ffffff00ff00 +ffffff00ff00ffffff0000ffffffffffffff00ffffffffff00ffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffff00ffff000000ffffff000000ffff00ffffffff00ffff +ffffffffff000000ffff00ff00ff00ffffff00ffff000000ffff00ff00ffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffff00ffff00ffff00 +00ff00ffff0000ff00ffffffff00ff00ffffffffffffffff00ffffffffff00ff00ffff0000ff00 +ffff0000ff00ffffff00ff00ff00ff00ffffff00ff00ffffff00ffffffffffffffffffffff00ff +ff000000000000000000ff0000ff0000ff000000000000ff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000000000ffff00ffffff00ff00ffffff00ff00ffffffffff0000 +ffffffff00ffffff00ff0000ffff00ffffff00ff00ffffff00ff0000ffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff00ffffff0000ffff0000ff +00ffff0000ff00ff00ffffffff00ff00ffffffffffffffff00ffffffffff00ffff0000ff00ffff +0000ff00ff00ffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffff00ffffff0000000000ffff00000000ff00ffffffffffffff +0000ffff0000000000ff00ffffffff00ff00ffff0000000000ff00ffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffff00ffff00ffffffffff00ffffff00ff00ffffffffffffff +ffff00ff00ffffffffff00ffffffff00ff00ffff00ffffffffff00ffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffff00ffff00ffffff00ff00ffff0000ff00ffffffff00ffff +ffff00ff00ffffff00ff00ffffffffff00ffffff00ffffff00ff00ffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffff000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffff00ffff000000ffffff0000ff00ff00ffffffffff0000 +0000ffffff000000ffff00ffffffffff00ffffffff000000ffff00ffffffffffff0000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffff000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffff000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffff000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff +ffff00ffffffffffffffffffffffffff00ffffffff00ffffff00ff00ffffffffff00ffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffff000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffff +ffffffffff00ffffffffffffffffffff00ffffffff00ffffff00ff00ffffffffff00ffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffffffff +ffffffffff00ffffffffffffffffffff00ffffffffff00ff00ffff00ffffffffff00ffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffff00ffffff +00ff00ff000000ffffff000000ffffff00ff0000ffff00ff00ffff00ffffffffff00ffff00ffff +ff00ffff00ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00ffffff00ffffff +00ff00ffff00ffffff00ffffff00ffff0000ffff00ffff0000ffff00000000000000ffff00ffff +ff00ffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff000000000000000000000000 +000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +ffff00000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ff00ff00ff00 +ffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffffffffff00ffff00ffff +ff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff000000000000000000ff0000ff0000ff000000000000ff00ffff00ffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffff00000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ff00ff00 +ffff00ffff00ffffff00ffffffffffff00ffffff00ffff0000ffff00ffffffffff00ffff00ffff +ff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff000000000000000000ff0000ff0000ff000000000000ff00ffff00ffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffff00ff00ff00ff00 +ffff00ffff00ffffff00ffffffffffff00ffffff00ffff00ff00ff00ffffffffff00ffff00ffff +ff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffff000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffff00ffffff00ff +ffff00ffff00ffffff00ffffff00ffff00ffffff00ff00ffff00ff00ffffffffff00ffff00ffff +ff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffffffffffffffffffffffffff00 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff00ffffff00ff +ffff00ffff0000ffffff000000ffffff00ffffff00ff00ffffff0000ffffffffff00ffffff0000 +0000ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffffffffffffffffffffffffffff +ffffff000000ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ffffffffffffffffffffffffffff +ffffffffffff0000000000000000000000000000000000000000000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff0000ffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff +ff00ff0000ff0000ff00ff0000ff0000ff00ff0000ff00ff00ff0000ffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ff +ff000000000000000000ff0000ff0000ff000000000000ff00ffffff0000ffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff0000ffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff0000ffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffff000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff0000000000ffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffff000000ffffffff000000ffffffff0000ff00ffffffffff00ffffffff00ffffff +000000ffffff00ffffff000000ffffff00ff0000ffffffff0000ffffffff000000ffffff00ff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffff00ffffffff00ffff00 +ffffff00ffff00ffff00ffffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ffff0000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffffffffff000000000000ffffff +ffffff00ffff00ffffffffffff00ffff00ffffff00ffff00ffffffffff00ffffff00ffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffff00ffffff00000000ffff00ffffff00ffffffffff00ffffffff00ffffff +00000000ffff00ffffff00000000ffff00ffffff00ffff00ffffffffff0000000000ffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffffffff00ffff00 +ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffff00ffff00ffff0000ffff00ffffff00ffffffffff00ffffffff00ffff00 +ffff0000ffff00ffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffffff00ffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00 +0000000000ffff000000ffffffff0000ff00ffffff00000000ffffffffff0000000000ffffffff +0000ff00ffff00ffffff0000ff00ffff00ffffff00ffffff0000ffffffff000000ffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffff00ffff00ff0000ffffff00ffffff00ff00ffffff +00ffffffff00ffffffff00ffffff000000ffff00ffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000 +0000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffff00ffff0000ffff00ffff00ffffff00ffff00ff00 +ffffffffff00ffffffff00ffff00ffffff00ffff00ff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ff00 +ffffffffff000000000000ffff00ffffff00ffff00ff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ff +ffffffffff00ffffffff00ffff00ffffff00ffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ff00 +ffffffffff00ffffffff00ffff00ffffff00ffff00ff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffff00ffff00ff00 +ffffffffff00ffffffff00ffff00ffffff00ffff00ff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffff000000000000ff00ffff00ffffff00ffffff00000000ff00ffffff +00ffffffff0000000000ffffffff000000ffff00ffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffff00ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffff00ffffffffffffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffff00ff00ffffffffffffff00ffffffff0000000000ffffffffffffffffffffff +ffffffffffffffffffffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffff00ff00ffffffffffffff00ffffffff00ffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffff00ffff00ffffffffffffffff00ffffff00ffffffff00ffff000000ffff00ffff +ff00ffffff00ff00ff00ff00000000ff00ff00000000ffffff0000ff00ffffffff00ff00ffff00 +0000ffff00ff0000ffff00ff00ffff000000ffffff000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ff00ffffffffff0000000000ffffffffffffff00ffffff0000000000ffff00ffffff00ff00ffff +00ff00ffff00ff0000ffff00ff00ffff00ff00ffffff00ff00ffff0000ffffffff0000ffff00ff +ffff00ff0000ffff00ff00ff00ff00ffffff00ff00ffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ff00ffffffffffffffff00ffffffffffffffff00ffffff00ffff00ffffff0000000000ffff00ff +00ff00ff00ffff00ffffff00ff00ffff00ff00ffffff00ff00ffffff00ffffffff00ffffff0000 +000000ff00ffffff00ff00ff00ff0000000000ffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ff00ffffffffffffffff00ffffffffffffff00ffffffff00ffffff00ffff00ffffffffffff00ff +00ff00ff00ffff00ffffff00ff00ffff00ff00ffffff00ff00ffffff00ffffffff00ffffff00ff +ffffffff00ffffff00ff00ff00ff00ffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ff00ffffffffffffffffffffffffffffffff00ffffffff00ffffff00ffff00ffffff00ffffff00 +ffffff00ffffff00ffffff00ff00ffff00ff00ffffff00ff00ffff0000ffffffff00ffffff00ff +ffff00ff0000ffff00ff00ff00ff00ffffff00ff00ffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffff000000ffffffff00 +ffffff00ffffff00ffffff00ff0000ff00ff00ffffff00ffff0000ff00ffffffff00ffffffff00 +0000ffff00ff0000ffff00ff00ffff000000ffffff000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffff0000ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000 +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00000000000000000000000000000000000000 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff000000000000000000000000000000ff00 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000ffffffffffffffffffffffff00ff00 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000ffffffffffffffffffffffffff0000 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffff0000 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff000000000000ffff00 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff00ffffffff00ffff00 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000ffff00 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff000000000000ffff00 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00 +00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffff0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00 +00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffff000000000000ffffffffff00 +00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffff00000000000000000000ffffff00 +00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffff000000000000ff0000000000 +00ffffff00ffff00ffffffff000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000ffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffff0000000000 +00ffffff00ffff00ffffffff000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000ffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffff00ffffffff000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffff00ffffffff000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffff0000000000 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000ff0000000000 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000ff0000000000 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000ffffffffff00 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000ffffffffff00 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000000000000000000000 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffff +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffff00000000000000000000000000000000000000 +00ffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff000000000000ff0000ff0000ff000000000000ff +0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffff000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffff000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffff000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000ffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff000000000000000000000000000000000000000000000000000000000000ffff +ffffffffffffffffffffffffffffffffffffffffff00000000ff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff000000000000ff0000ff0000ff000000000000ff +0000ffff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffff00000000ff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff000000000000ff0000ff0000ff000000000000ff +0000ffff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffff0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff +ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 +000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff0000ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ff00ff00ff0000ff00ff0000ff0000ff00ff0000ff00ff +0000ffff00ff0000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffff00ff000000000000ff0000ff0000ff000000000000ff +0000ffff00ffffff0000ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000ff0000ff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffff0000ffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000ff0000ff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffff0000ffff0000000000000000000000000000000000000000000000 +000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +0000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffff0000ff +ff0000ff00000000000000ff0000ffffffff0000ffffff0000000000ffffff0000ffffffffffff +0000ffffffffff0000ffffffff000000ffffffff0000ff0000ff0000ffffff0000ffffffff0000 +00ffffffff0000ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ff +ff00000000000000000000ff0000ffffffff0000ffff00000000000000ffff0000ffffffffffff +00000000ffffffffffffffff0000000000ffffff0000000000ff0000ffffff0000ffffff000000 +0000ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000ff0000000000000000000000000000000000000000000000 +000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ff +ff000000ffffff0000ffffff0000ffffffff0000ffff0000ffffff0000ffff0000ffffffffffff +ff000000000000ffffffff0000ffffff0000ffff000000ffffff0000ffffff0000ffff0000ffff +ff0000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ff +ff0000ffffffff0000ffffff0000ffffffff0000ffffffffff00000000ffff0000ffffffffffff +ffffff0000000000ffffff00000000000000ffff0000ffffffffff0000ff0000ffffff00000000 +000000ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffff0000ff +ff0000ffffffff0000ffffff0000ffffffff0000ffffff000000000000ffff0000ffffffffffff +ffffffffffff000000ffff00000000000000ffff0000ffffffffff0000ff0000ffffff00000000 +000000ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffff0000ff +ff0000ffffffff0000ffffff0000ffffffff0000ffff000000ffff0000ffff0000ffffffffffff +0000ffffffffff0000ffff0000ffffffffffffff0000ffffffffff0000ff0000ffffff0000ffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ff +ff0000ffffffff0000ffffff0000ffffff000000ffff0000ffffff0000ffff0000ffffffffffff +000000ffffff000000ffff000000ffff0000ffff0000ffffffffffff000000ffffffff000000ff +ff0000ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ff +ff0000ffffffff00000000ff0000000000000000ffff00000000000000ffff0000ffffffffffff +ff00000000000000ffffffff0000000000ffffff0000ffffffffffff000000ffffffffff000000 +0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ff +ff0000ffffffffff000000ffff00000000ff0000ffffff00000000ff0000ff0000ffffffffffff +ffff0000000000ffffffffffff000000ffffffff0000ffffffffffff000000ffffffffffff0000 +00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff +ffffffff00ffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffffffffffffffff +ffffffff00ffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffff000000ffffff00 +0000ffff00ffffffff00ffffffffffffff000000ffff00ff00ff00ffffff00ffff000000ffff00 +ff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff00ffffff00ff00ff +ffff00ff00ffffffffff0000ffffffff00ffffff00ff0000ffff00ffffff00ff00ffffff00ff00 +00ffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff0000000000ffff00 +000000ff00ffffffffffffff0000ffff0000000000ff00ffffffff00ff00ffff0000000000ff00 +ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffff00ff +ffff00ff00ffffffffffffffffff00ff00ffffffffff00ffffffff00ff00ffff00ffffffffff00 +ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffff00ffffff00ff00ff +ff0000ff00ffffffff00ffffffff00ff00ffffff00ff00ffffffffff00ffffff00ffffff00ff00 +ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffff000000ffffff00 +00ff00ff00ffffffffff00000000ffffff000000ffff00ffffffffff00ffffffff000000ffff00 +ffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff0000ffffff +ffffff0000ffffffffff000000ffffffff00000000000000000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff000000ffff +ffffff0000ffffffffff000000ffffffff00000000000000000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff +ffffff0000ffffffff0000ff0000ffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffff0000ffff0000ffffff0000000000ffffffffffffff00000000ff +ffffff0000ffffffff0000ff0000ffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffff0000ffff0000ffff00000000000000ffffffffffff0000ff0000 +ffffff0000ffffffff0000ff0000ffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffff0000ffff0000ffff0000ffffff0000ffffffffffff0000ffff00 +00ffff0000ffffff0000ffffff0000ffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ff0000ffffff0000ffffffffff00000000ffffffffffff0000ffff00 +00ffff0000ffffff0000ffffff0000ffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ff0000ffffff0000ffffff000000000000ffffffffffff0000ffffff +0000ff0000ffffff00000000000000ffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ff0000ffffff0000ffff000000ffff0000ffffffffffff0000ffffff +ff00000000ffff000000000000000000ffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff000000ffffffff0000ffff0000ffffff0000ffffffffffff0000ffffff +ff00000000ffff0000ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff000000ffffffff0000ffff00000000000000ffffffffffff0000ffffff +ffff000000ffff0000ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff000000ffffffff0000ffffff00000000ff0000ffffffffff0000ffffff +ffffff0000ff0000ffffffffffffff0000ffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff000000ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff +ff00000000ffffffffffffffffffffffffffffffffffffffff00000000ffffffff00000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00000000ffffffff00000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff +showpage +end +%%EOF +%%EndDocument +end PEND(Figure 2: Architecture of a virtual serv)188.83 437.764 Q +(er via N)-.15 E -1.11(AT)-.35 G 1.05(The w)72 459.364 R(ork\215o)-.1 E +3.55(wo)-.25 G 3.55(fv)-3.55 G 1.05(irtual serv)-3.55 F 1.05(er via N) +-.15 F 3.27 -1.11(AT i)-.35 H 3.55(sa)1.11 G 3.55(sf)-3.55 G(ollo)-3.55 +E 1.05(ws: When a user accesses the service pro)-.25 F 1.05 +(vided by the)-.15 F(serv)72 471.364 Q .956(er cluster)-.15 F 3.456(,t) +-.4 G .956(he request pack)-3.456 F .955 +(et destined for virtual IP address \(the e)-.1 F .955 +(xternal IP address for the load bal-)-.15 F 1.11(ancer\) arri)72 +483.364 R -.15(ve)-.25 G 3.61(sa).15 G 3.61(tt)-3.61 G 1.11 +(he load balancer)-3.61 F 3.61(.T)-.55 G 1.11(he load balancer e)-3.61 F +1.11(xamines the pack)-.15 F(et')-.1 E 3.61(sd)-.55 G 1.11 +(estination address and port)-3.61 F(number)72 495.364 Q 3.785(.I)-.55 G +3.785(ft)-3.785 G(he)-3.785 E 3.785(ya)-.15 G 1.285 +(re matched for a virtual serv)-3.785 F 1.285 +(er service according to the virtual serv)-.15 F 1.285 +(er rule table, a real)-.15 F(serv)72 507.364 Q .231(er is chosen from \ +the cluster by a scheduling algorithm, and the connection is added into\ + the hash table)-.15 F 1.683(which records all established connections.\ + Then, the destination address and the port of the pack)72 519.364 R +1.682(et are)-.1 F(re)72 531.364 Q .062 +(written to those of the chosen serv)-.25 F(er)-.15 E 2.563(,a)-.4 G +.063(nd the pack)-2.563 F .063(et is forw)-.1 F .063(arded to the serv) +-.1 F(er)-.15 E 2.563(.W)-.55 G .063(hen the incoming pack)-2.563 F(et) +-.1 E .259(belongs to this connection and the established connection ca\ +n be found in the hash table, the pack)72 543.364 R .258(et will be)-.1 +F(re)72 555.364 Q .116(written and forw)-.25 F .117 +(arded to the chosen serv)-.1 F(er)-.15 E 2.617(.W)-.55 G .117 +(hen the reply pack)-2.617 F .117(ets come back, the load balancer re) +-.1 F(writes)-.25 E .076(the source address and port of the pack)72 +567.364 R .075 +(ets to those of the virtual service. When the connection terminates or) +-.1 F(timeouts, the connection record will be remo)72 579.364 Q -.15(ve) +-.15 G 2.5(di).15 G 2.5(nt)-2.5 G(he hash table.)-2.5 E(An e)72 594.964 +Q(xample of V)-.15 E(irtual Serv)-.6 E(er via N)-.15 E 2.22 -1.11(AT i) +-.35 H 2.5(si)1.11 G(llustrated in Figure 3.)-2.5 E EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-6-)282.17 48 Q 14 14 244.8 665 -209.092 568 +165.6 293.092 PBEGIN +%%BeginDocument: figure3.ps +%%Creator: GIMP PostScript file plugin V 1.04 by Peter Kirchgessner +%%Title: /home/wensong/linuxexpo/figure3.ps +%%CreationDate: Thu Mar 4 20:28:54 1999 +%%DocumentData: Clean7Bit +%%Pages: 1 +%%BoundingBox: 14 14 679 582 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +5 dict begin +% Translate for offset +14.173228 14.173228 translate +% Translate to begin of first scanline +0.000000 566.929134 translate +664.263353 -566.929134 scale +% Variable to keep one line of raster data +/scanline 389 1 mul string def +% Image geometry +389 332 8 +% Transformation matrix +[ 389 0 0 332 0 0 ] +{ currentfile scanline readhexstring pop } +image +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff +ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff00 +00000000ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff +ffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff00000000ff +ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffff00ff0000ffff00000000ffff000000ffffff00ff0000ff00ff0000ffffff +ff000000ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff000000ffff00ffff00ffffff00ffffff00ff000000ffff000000ffff00ffff +00ffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffff00ffffff00ffff00ffffff0000000000ffff00ffffffff00ffffff00ffff +0000000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffffffff00ffffff00ffff +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffff00ffffff00ffff00ffffff00ffffffffffff00ffffffff00ffffff00ffff +00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffff00ffffff00ffff00ff00ff00ffffff00ffff00ffffffff00ffffff00ffff +00ffffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000000000000000ff000000ff0000ffffff000000ffff000000ffff000000ff000000ff +ff000000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff +ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff00000000ff +ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff +ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff00 +00000000ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff0000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff0000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00000000000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff000000000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff0000000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00000000000000000000000000000000000000000000000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffff000000ffffff000000ffffff000000ffffffffffffff00ffffffff000000ffff +ff000000ffffffffffffff00ffffffff000000ffffffffff0000ffffffffffff000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffff00ffffff00ff00ffffff00ff00ffffff00ffffffffff0000ffffff00ffffff00ff +00ffffff00ffffffffff0000ffffff00ffffff00ffffff00ffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff00000000000000000000000000000000000000ffff00ffffffff +ffffffffffffffffffff00ff00ffffff00ffffffffff00ffffffffffff00ffffff00ffffff00ff +ffffffff00ffffffffffff00ffffff00ffffff00ffff00ffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffff00ffffffff +ffffffffffffffffffff00ff00ffffff00ffffffffff00ffffffffffff00ffffff00ffffff00ff +ffffff00ffffffffffffff00ffffff00ffffff00ff00ff0000ffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffffffff +ffffffffffffffffffff00ff00ffffff00ffffffffff00ffffffffffff00ffffff00ffffff00ff +ffff0000ffffffffffffff00ffffff00ffffff00ff0000ffff00ffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ff0000000000000000000000000000ff00ffff00ffffffff +ffffffffffffffffff00ffff00ffffff00ffffffff00ffffffffffffff00ffffff00ffffff00ff +ffffffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ff00ffffffffffffffffffffff0000ff00ffff00ffffffff +ffffffffffffffff00ffffff00ffffff00ffffff00ffffffffffffffff00ffffff00ffffff00ff +ffffffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff000000ffffffffffffffffffffffff0000ff00ffff00ffffffff +ffffffffffffff00ffff00ff00ffffff00ffff00ffff00ffffffffffff00ffffff00ffffff00ff +ffffffff00ffffffffffff00ffffff00ffffff00ff00ffffff00ffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff000000ffffffffffffffffffffffffff00ff00ffff00ffffffff +ffffffffffff0000000000ffff000000ffff0000000000ffff00ffff000000ffffff000000ffff +00000000ffffff00ffff000000ffffff000000ffffff000000ffffff00ff000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffff0000000000ffff00ff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ff000000000000000000000000ff00ff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffff00ffffff00ffff00ff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffff0000000000ffff00ff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffff0000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffff00ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffff0000000000ffffffff00ff00ffff00ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffff000000000000000000ffffff00ff00ffff00ffff00ff +ffffff000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffff00000000ff00ffff00ffff00ff +ffffff000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffff00ff +ffffff000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffff00ff +ffffff000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffff00ffffffff000000000000ffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffff00ff +ffffff000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffff00ffffffff00ffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff000000000000000000000000ff00000000ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffff00ffffffff00ffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff000000000000000000000000ff00000000ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffff00ffffffffffffff000000ffffff +ff0000ffffffff0000ff00ffffffffff00ffffffff00ffffff0000ffffff00ffffff0000ffffff +00ff0000ffffffff000000ffffff0000ffffff00ff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff000000000000000000000000ff00000000ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffff00ffff +00ffff00ffff00ffff0000ffffffffff0000000000ffffff00ffff00ffff00ffff00ffff00ff00 +0000ffff00ffff00ffff00ffff00ffff00ff000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff000000000000000000000000ffffffff00ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffff00ffff +ff000000ffff00ffffff00ffffffffff00ffffffff00ffffff000000ffff00ffffff000000ffff +00ffffff00ffff00ffffffffff00000000ffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff000000000000000000000000ffffffff00ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffff00ffffffffffff00ffffff00ffff +00ffff00ffff00ffffff00ffffffffff00ffffffff00ffff00ffff00ffff00ffff00ffff00ffff +00ffffff00ffff00ffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffff00ffffffff00ff00ffffff00ffff +00ffff00ffff00ffff000000ffffffff00ffffffff00ffff00ffff00ffff00ffff00ffff00ffff +00ffffff00ffff00ffff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffff000000000000ffffff000000ffffff +ff00000000ffff0000ff00ffffffff000000000000ffffffff00000000000000ffff0000000000 +0000ff000000ffff0000ffffffff0000ffff000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000ffffffffffffffffffffffffffff00ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff0000000000000000000000000000000000ff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffff000000 +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffff00000000000000000000000000000000000000ffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffff00ffff00ff0000ffff0000ffff0000ff0000ff0000ffffffff00ffffffff00ffffff +000000ffff0000ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff0000ff000000ffff00ffff00ffffff00ffff00ff00ffffffffff0000000000ffffff00 +ffffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffffffffff00ffffffff00ffff00 +ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff000000000000000000000000000000000000000000ff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffff00ffff00ffffff00ffff00ffffff00ffffff00ffffffffffff00ffffffff00ffff00 +ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ff +ffffff00ff00ffff00ffffff00ffff00ffff000000ff00ff00ffffffffff00ffffffff00ffff00 +ffffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffff000000 +000000ff000000000000ff000000ffff0000ff00ff0000ff0000ffffff000000000000ffffffff +000000ffff0000ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffff000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffff000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffff000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffff0000 +0000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffff +ffffffffffffffffffff000000ff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff000000000000000000000000000000000000000000ff00ffff00ff +ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffff000000ff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff +ffffffffffffffffffffff00ffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff000000000000000000000000000000000000000000ff00ffff0000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffffffff +ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ffffffff +ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff0000ffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff000000ff00ff0000ff0000ff0000ff0000ff0000ff0000ff00ff00ff0000ff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffff00ff000000000000000000000000000000000000000000ff00ffffff00 +00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff0000ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff0000ff000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffff00000000ffff000000ffffff +ffffffff00ffffffffffff0000ffffffffff000000ffffffff00ffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffffff00ff00ffffff00ffff +ffffff0000ffffffffff00ffffffffffff00ffffff00ffffff00ff0000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffffffff00ffff +ffffffff00ffffffff00ffffffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffff00ffff +ffffffff00ffffff00ff0000ffffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffff00ffff +ffffffff00ffffff0000ffff00ffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffff00ffffff +ffffffff00ffffff00ffffff00ffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff00ffffffff +ffffffff00ffffff00ffffff00ffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffff00ffff +ffffffff00ffffff00ffffff00ffffffff00ffffff00ffffff00ffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00000000ffff00 +0000ffffffffffff0000ffffffffffff0000ffffffffff000000ffffffffffff000000ffffffff +00ff000000ffffffff000000ffffff000000ffffffffff000000ffffffff000000ffffff000000 +ffffffffff000000ffffffff000000ffffff000000ffffffffff000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff000000ffffffff00ffffff0000000000ffff +00ffff000000ffffff000000ffffff00ffff000000ffffff0000ff000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffff00ff00ff +ffff00ffffffffffff00ffffffff0000ffffffffffff00ffffff00ffffffff00ffffff00ffffff +0000ffffff00ffff00ffffffffff00ffffffffffffff00ffffff00ffff00ffffffffff00ffffff +ffffffff00ffffff00ffff00ffffffffff00ffffffffffffff00ffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00ffffff +ffff00ffffffffffff00ffffffff00ffffffffffffff00ffffff00ffffffff00ffffff00ffff00 +ffffffffff00ffff0000ffffffff0000ffffffffffffffffffff00ffff0000ffffffff0000ffff +ffffffffffffffff00ffff0000ffffffff0000ffffffffffff00ffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff +ffff00ffffffffffff00ffffff00ff0000ffffffffff00ffffff00ffffffff00ffffff00ffff00 +ffffffffff00ffffffff00ffffffffff00ffffffffffffffffff00ffffffff00ffffffffff00ff +ffffffffffffffff00ffffffff00ffffffffff00ffffffffff00ffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff +ff00ffffffffffffff00ffffff0000ffff00ffffffff00ffffff00ffffffff00ffffff00ffff00 +ffffffff00ffffffffffff00ffffffffff00ffffffffffffff00ffffffffffff00ffffffffff00 +ffffffffffffff00ffffffffffff00ffffffffff00ffffffff00ffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffff +00ffffffffffffffff00ffffff00ffffff00ffffffff00ffffff00ffffffff00ffffff00ffff00 +ffffff00ffffffffffffff00ffffffffff00ffffffffffff00ffffffffffffff00ffffffffff00 +ffffffffffff00ffffffffffffff00ffffffffff00ffffffff00ffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00 +ffff00ffffffffffff00ffffff00ffffff00ffffffff00ffffff00ffffffff00ffffff00ff00ff +ffff00ffff00ffffffffff00ffffffffff00ffffffffff00ffff00ffffffffff00ffffffffff00 +ffffffffff00ffff00ffffffffff00ffffffffff00ffffffff00ffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00ffffff0000 +000000ffff00ffff000000ffffff000000ffffff00ffff000000ffffff00ffff000000ffff00ff +ff0000000000ff00000000ffff00000000ffffff00ff0000000000ff00000000ffff00000000ff +ffff00ff0000000000ff00000000ffff00000000ffffff00ffff000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 +000000000000000000000000ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +00000000000000000000000000000000000000ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00000000000000000000 +000000000000000000ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000 +00000000000000000000000000000000ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffff +ffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000ff0000ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000ff0000ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000ffffffffffff +ffffffffff00ff0000ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00ffffffffffffffffffffff00ff0000ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000ffffffffffff +ffffffffffff000000ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00ffffffffffffffffffffffff000000ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffff000000ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffff000000ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffff00 +0000000000ffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffff000000000000ffff0000ffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +0000000000ffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +000000000000000000000000ffff0000ffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffff00 +ffffffff00ffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffff00ffffffff00ffff0000ffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffff00 +0000000000ffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffff000000000000ffff0000ffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffff00000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffff000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffff +ffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffff000000 +0000ffffffffff0000ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffff0000000000ffffffffff0000ffff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffff0000000000 +00000000ffffff0000ffff00ffff00ffffffff0000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000ffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffff000000000000000000ffffff0000ffff00ffff00ffffffff00000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000ffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffff000000 +0000ff000000000000ffff00ffff00ffffffff0000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000ffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffff0000000000ff000000000000ffff00ffff00ffffffff00000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000ffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffff000000000000ffff00ffff00ffffffff0000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000ffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffff000000000000ffff00ffff00ffffffff00000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000ffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffff00ffffffff0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffff00ffffffff00000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffff00ffffffff0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffff00ffffffff00000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +0000ff000000000000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +000000000000000000ff000000000000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +0000ff000000000000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +000000000000000000ff000000000000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +0000ff000000000000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +000000000000000000ff000000000000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +0000ffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +000000000000000000ffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffff +ffffffffffffffff00ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffff00ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff +ffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff0000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff0000000000000000 +000000000000000000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000000000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffff +ffffffffffffffff00ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffff00ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffff +ffffffffffffffff00ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffff00ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffff +ffffffffffffffff00ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffff00ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00000000000000000000 +000000000000000000ffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000 +00000000000000000000000000000000ffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000 +00000000000000000000ff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000000000000000000000000000000000ff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffff0000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffff0000000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffff0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffff00000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffff0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffff00000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffff0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffff00000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffff000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffff000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffff000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffff000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000 +00000000000000000000ff00ffff00000000000000000000000000000000000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffff000000ff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000000000000000000000000000000000ff00ffff000000000000000000000000000000000000 +00000000000000000000ffffffffffffffffffffffffffffffffffffffffffff000000ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffff00ffffffffffffffffffffffffff00ffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffff000000ff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffff00ffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff000000ff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000000000000000000000 +00000000000000000000ff00ffff00000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000000000000000000000000000000000ff00ffff000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffffffffffffffffffffffffff000000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffffffffffffffffffffffffff000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffffffffffffffffffffffffffffffff000000ffffffffffffffff +ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffffffffffffffffffffffffffffffff000000ff +ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ffffffffffffffffffffffffffffffffffffff0000000000000000 +00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ffffffffffffffffffffffffffffffffffffff00 +0000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff0000ffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff0000ffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000ff00ff0000ff0000ff0000ff +0000ff0000ff0000ff00ff00ff0000ffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00ff0000 +ff0000ff0000ff0000ff0000ff0000ff00ff00ff0000ffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffff00ff0000000000000000000000 +00000000000000000000ff00ffffff0000ffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ff00000000 +0000000000000000000000000000000000ff00ffffff0000ffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffff0000ffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffff0000ffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffff0000ffff00000000000000000000000000000000 +00000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffff000000000000000000 +0000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000ff00000000000000000000000000000000 +00000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000ff000000000000000000 +0000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffff00000000ffff000000ffffffffffffff00ffffffffffff0000ffffffffff000000ffff +ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffff00000000ffff000000ffffffffffffff00ffffffffffff0000ffffff +ffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffff00ffffff00ff00ffffff00ffffffffff0000ffffffffff00ffffffffffff00ffffff00ff +ffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffff00ffffff00ff00ffffff00ffffffffff0000ffffffffff00ffffffffff +ff00ffffff00ffffffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffff00ffffffffff00ffffffffffff00ffffffff00ffffffffffffff00ffffff00ff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffff00ffffffffff00ffffffffffff00ffffffff00ffffffffffff +ff00ffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffffffffff00ffffffffffff00ffffff00ff0000ffffffffff00ffffff00ff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffff00ffffffffffff00ffffffffffff00ffffff00ff0000ffffffff +ff00ffffff00ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffffffffff00ffffffffffff00ffffff0000ffff00ffffffff00ffffff00ff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffff00ffffffffffff00ffffffffffff00ffffff0000ffff00ffffff +ff00ffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffffffff00ffffffffffffff00ffffff00ffffff00ffffffff00ffffff00ff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffff00ffffffffff00ffffffffffffff00ffffff00ffffff00ffffff +ff00ffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffff00ffffffff00ffffffffffffffff00ffffff00ffffff00ffffffff00ffffff00ff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffff00ffffffff00ffffffffffffffff00ffffff00ffffff00ffffff +ff00ffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffff00ffffffff00ffff00ffffffffffff00ffffff00ffffff00ffffffff00ffffff00ff +ffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffff00ffffffff00ffff00ffffffffffff00ffffff00ffffff00ffffff +ff00ffffff00ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffff00ffffff0000000000ffff00ffff000000ffffff000000ffffff00ffff000000ffff +ff00ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffff00ffffff0000000000ffff00ffff000000ffffff000000ffffff00 +ffff000000ffffff00ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +showpage +end +%%EOF +%%EndDocument +end PEND(Figure 3: an e)192.81 311.092 Q(xample of V)-.15 E(irtual Serv) +-.6 E(er via N)-.15 E -1.11(AT)-.35 G -.8(Ta)72 332.692 S(ble 1 illustr\ +ates the rules speci\214ed in the Linux box with virtual serv).8 E +(er support.)-.15 E .4 LW 503.989 343.192 72 343.192 DL/F1 10 +/Times-Bold@0 SF -.92(Ta)197.869 352.692 S +(ble 1: an example of virtual ser).92 E -.1(ve)-.1 G 2.5(rr).1 G(ules) +-2.5 E 503.989 357.192 72 357.192 DL F0 31.631(Protocol V)83.377 366.692 +R(irtual IP Address)-.6 E 31.631(Port Real)34.131 F(IP Address)2.5 E +34.961(Port W)34.131 F(eight)-.8 E 503.989 371.192 72 371.192 DL 54.121 +(172.16.0.2 80)310.72 380.692 R(1)44.131 E 503.989 385.192 293.654 +385.192 DL 54.121(172.16.0.3 8000)310.72 394.692 R(2)34.131 E 47.181 +(TCP 202.103.106.5)83.377 387.692 R(80)51.021 E 503.989 399.192 72 +399.192 DL 47.181(TCP 202.103.106.5)83.377 408.692 R 38.301 +(21 172.16.0.3)51.021 F 41.631(21 1)56.621 F 503.989 413.192 72 413.192 +DL 503.989 343.192 503.989 413.192 DL 72 343.192 72 413.192 DL 446.906 +357.192 446.906 413.192 DL 392.775 357.192 392.775 413.192 DL 293.654 +357.192 293.654 413.192 DL 242.853 357.192 242.853 413.192 DL 134.332 +357.192 134.332 413.192 DL .896(All traf)72 430.292 R .897 +(\214c destined for IP address 202.103.106.5 Port 80 is load-balanced o) +-.25 F -.15(ve)-.15 G 3.397(rr).15 G .897(eal IP address 172.16.0.2) +-3.397 F .665(Port 80 and 172.16.0.3 Port 8000. T)72 442.292 R(raf)-.35 +E .664(\214c destined for IP address 202.103.106.5 Port 21 is port-forw) +-.25 F(arded)-.1 E .923 +(to real IP address 172.16.0.3 Port 21. Note real serv)72 454.292 R .923 +(ers can run an)-.15 F 3.424(yO)-.15 G 3.424(St)-3.424 G .924 +(hat supports TCP/IP)-3.424 F 3.424(,t)-1.11 G .924(he def)-3.424 F +(ault)-.1 E(route of real serv)72 466.292 Q +(ers must be the virtual serv)-.15 E(er\(172.16.0.1 in this e)-.15 E +(xample\).)-.15 E -.15(Pa)72 481.892 S(ck).15 E(et re)-.1 E(writing w) +-.25 E(orks as follo)-.1 E(ws.)-.25 E(The incoming pack)97 497.492 Q +(et for web service w)-.1 E +(ould has source and destination addresses as:)-.1 E 503.992 507.992 97 +507.992 DL 52.586(SOURCE 202.100.1.2:3456 DEST 202.103.106.5:80)115.362 +517.492 R 503.992 521.992 97 521.992 DL 503.992 507.992 503.992 521.992 +DL 97 507.992 97 521.992 DL 387.807 507.992 387.807 521.992 DL 307.721 +507.992 307.721 521.992 DL 182.355 507.992 182.355 521.992 DL .355 +(The load balancer will choose a real serv)97 535.492 R(er)-.15 E 2.855 +(,e)-.4 G .355(.g. 172.16.0.3:8000. The pack)-2.855 F .354(et w)-.1 F +.354(ould be re)-.1 F .354(written and)-.25 F(forw)97 547.492 Q +(arded to the serv)-.1 E(er as:)-.15 E 503.997 557.992 97 557.992 DL +53.951(SOURCE 202.100.1.2:3456 DEST 172.16.0.3:8000)115.817 567.492 R +503.997 571.992 97 571.992 DL 503.997 557.992 503.997 571.992 DL 97 +557.992 97 571.992 DL 391.674 557.992 391.674 571.992 DL 310.223 557.992 +310.223 571.992 DL 183.492 557.992 183.492 571.992 DL +(Replies get back to the load balancer as:)97 585.492 Q 503.997 595.992 +97 595.992 DL 53.951(SOURCE 172.16.0.3:8000 DEST 202.100.1.2:3456) +115.817 605.492 R 503.997 609.992 97 609.992 DL 503.997 595.992 503.997 +609.992 DL 97 595.992 97 609.992 DL 386.674 595.992 386.674 609.992 DL +305.223 595.992 305.223 609.992 DL 183.492 595.992 183.492 609.992 DL +(The pack)97 623.492 Q(ets w)-.1 E +(ould be written back to the virtual serv)-.1 E +(er address and returned to the client as:)-.15 E 503.992 633.992 97 +633.992 DL 52.586(SOURCE 202.103.106.5:80 DEST 202.100.1.2:3456)115.362 +643.492 R 503.992 647.992 97 647.992 DL 503.992 633.992 503.992 647.992 +DL 97 633.992 97 647.992 DL 387.807 633.992 387.807 647.992 DL 307.721 +633.992 307.721 647.992 DL 182.355 633.992 182.355 647.992 DL EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-7-)282.17 48 Q/F1 15/Times-Bold@0 SF 3.75 +(3.2. V)72 84 R(irtual Ser)-.555 E -.15(ve)-.15 G 3.75(rv).15 G(ia IP T) +-3.75 E(unneling)-1.38 E F0 1.913(IP tunneling \(IP encapsulation\) is \ +a technique to encapsulate IP datagram within IP datagrams, which)72 +106.8 R(allo)72 118.8 Q .073(ws datagrams destined for one IP address t\ +o be wrapped and redirected to another IP address. This tech-)-.25 F +.155(nique can be used to implement virtual serv)72 130.8 R .155 +(er that the load balancer tunnel the request pack)-.15 F .155 +(ets to the dif)-.1 F(fer)-.25 E(-)-.2 E .915(ent serv)72 142.8 R .915 +(ers, the serv)-.15 F .915 +(ers process the requests and return the results to clients directly) +-.15 F 3.414(,a)-.65 G .914(nd the services can)-3.414 F +(still appear as a virtual service on a single IP address.)72 154.8 Q +.348(The architecture of virtual serv)72 170.4 R .348 +(er via IP tunneling is illustrated in Figure 4. The most dif)-.15 F +.349(ferent thing of vir)-.25 F(-)-.2 E .414(tual serv)72 182.4 R .414 +(er via IP tunneling to that of virtual serv)-.15 F .414(er via N)-.15 F +2.634 -1.11(AT i)-.35 H 2.914(st)1.11 G .414 +(hat the load balancer sends requests to real)-2.914 F(serv)72 194.4 Q +1.314(ers through IP tunnel in the former)-.15 F 3.814(,a)-.4 G 1.314 +(nd the load balancer sends request to real serv)-3.814 F 1.315 +(ers via netw)-.15 F(ork)-.1 E(address translation in the latter)72 +206.4 Q(.)-.55 E 14 14 360 595 -343.664 568 108 562.064 PBEGIN +%%BeginDocument: figure4.ps +%%Creator: GIMP PostScript file plugin V 1.04 by Peter Kirchgessner +%%Title: /home/wensong/linuxexpo/figure4.ps +%%CreationDate: Thu Mar 4 20:29:51 1999 +%%DocumentData: Clean7Bit +%%Pages: 1 +%%BoundingBox: 14 14 609 582 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +5 dict begin +% Translate for offset +14.173228 14.173228 translate +% Translate to begin of first scanline +0.000000 566.929134 translate +594.458318 -566.929134 scale +% Variable to keep one line of raster data +/scanline 691 1 mul string def +% Image geometry +691 659 8 +% Transformation matrix +[ 691 0 0 659 0 0 ] +{ currentfile scanline readhexstring pop } +image +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000000000 +00000000000000000000000000000000000000000000000000000000000000ffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000000000 +00000000000000000000000000000000000000000000000000000000000000ffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffff +ffffffffffffffffffffffffff000000000000000000000000000000000000000000ff00000000 +0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ff00ff0000 +0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffff +ffffffffffffffffffffffffff00ffffff00000000000000000000000000ffffff00ff00ff0000 +0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffff00000000000000000000000000ffffff00ff00000000 +0000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff000000000000000000000000000000000000000000ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffff00000000000000ffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00000000000000000000000000000000000000ff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffff00ffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffff00000000000000ffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff000000000000000000000000000000000000000000ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff000000000000000000000000000000000000000000ffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00ffffffff00ffff000000ffffff000000ffff00ff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00ffffffff00ff00ffffff00ff00ffffff00ff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00ffffffff00ffff0000ffffff0000000000ff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00ffffffff00ffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ff00ffffffff00ff00ffffff00ff00ffffff00ff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffff00000000ffffff000000ffffff000000ffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 +00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 +0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000000000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000000000000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00000000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c60000000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000000000c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffff +ffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffff +ffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffff +ffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffff +ffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000 +ffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000000000ffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffff00ffffff000000ffffff00ff0000ffffff00ffff00ffffff000000ffff +ffff000000ffffffffffffff0000ff00ffffff000000ffffff00ffff00ff0000ffffffff0000ff +00ffffffff000000ffff000000ffffffffff000000ff00ff0000ffffffff000000ffffffffffff +00ffffff00ffffff000000ffffffff000000ffffff00ff00ffffffffff0000ff00ffff00ffff00 +ff00ffff000000ffffffff0000ffff000000ff00ff00ffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffff00ffff00ffffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ff +ff00ffffff00ffffffffff00ffff0000ffff00ffffff00ffff00ffff0000ffff00ffff00ffff00 +00ffffffffff00ffff00ffffff00ffffffffff00ffff0000ffff00ffff00ffffff00ffffffffff +00ffffff00ffff00ffffff00ffff00ffffff00ffff0000ffffffffff00ffff0000ffff00ffff00 +00ffff00ffffff00ffff00ffff00ffff00ffff00ff00ffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000000000ffffff00ffffff00ffff00ffffff00ffff00ffff00ffff00ffffff00ff +ff00ffffffffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff +00ffffffffff00ffff00ffffff00ffffffffff00ffff00ffffff00ffff00ffffff00ffffffffff +00ffffff00ffff00ffffffffffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffff00 +ffffff00ffffff00ffff00ffffffffff00ffff00ffff00ff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffff00ffffffff0000000000ffff00ffffff00ffff00ffff00ffff0000000000ff +ffff000000ffffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff +00ffffffffff00ffff00ffffff00ffffffffff00ffff00ffffff00ffff0000000000ffffffffff +00ffffff00ffffff000000ffffff0000000000ffff00ffffffffffff00ffffff00ffff00ffff00 +ffffff0000000000ffff00ffffffffff00ffff00ffff00ff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffff00ffffff00ffffffffffff00ffffff00ffff00ffff00ffff00ffffffffff +ffffffffff00ffffffffff00ffffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff +00ffffffffff00ffff00ffffff00ffffffffff00ffff00ffffff00ffff00ffffffffffffffffff +00ffffff00ffffffffffff00ffff00ffffffffffff00ffffffffffff00ffffff00ffff00ffff00 +ffffff00ffffffffffff00ffffffffff00ffff00ffff00ff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffff00ffffff00ffffff00ffff0000ffff00ffff00ffff00ffff00ffffff00ff +ff00ffffff00ffffffffff00ffff0000ffff00ffffff00ffff00ffff00ffffff00ffff00ffff00 +00ffffffffff00ffff00ffffff00ffffffffff00ffff00ffffff00ffff00ffffff00ffffffffff +00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffffff00ffffff00ffff00ffff00 +ffffff00ffffff00ffff00ffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +00000000000000000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000000000000000 +000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffff00ffffff000000ffffff00ff0000ffffff00ffff00ffffff000000ffff +ffff000000ffffffffffffff0000ff00ffffff000000ffffff00ffff00ffffff00ffffff0000ff +00ffffffffff0000ffff000000ffffffffffff0000ff00ffffff00ffffff000000ffffffffffff +ff00000000ffffff000000ffffffff000000ffffff00ffffffffffffff00000000ffff00ffff00 +ffffffff000000ffffffff0000ffffff0000ff00ffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff00000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffff +ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffff +ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffff +ffffffff0000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000ff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffff +ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c600 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c600c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c600c600 +c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c600c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c6c6c600c6c600 +c6c6c6c6c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6000000c6c600000000c6c6 +c6000000c6c6c6c600c60000c600c6000000c6c6c6c6c6000000c6c6c600000000c6c600c6c600 +c6c600c6000000c6c600000000c600c60000c6c6c600000000c6c6c600c6000000c6c6c6c6c600 +0000c6c6c600000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c60000c6c6c600c6c600c6c6c6c6 +00c6c6c600c6c6c60000c6c6c60000c6c6c600c6c6c600c6c6c600c6c6c600c6c6c6c600c6c600 +c6c60000c6c6c600c6c600c6c6c60000c6c6c6c600c6c6c6c600c6c60000c6c6c600c6c6c600c6 +c6c600c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600 +c6c6c6c6c600c6c600c6c6c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6c6c600c6c600 +c6c600c6c6c6c600c6c600c6c6c600c6c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6 +c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600 +c6c6c6c6c600c6c600c6c6c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6c600c6c6c600 +c6c600c6c6c6c600c6c600c6c6c600c6c6c6c6c6c6c6c6000000c6c600c6c6c6c600c6c600c6c6 +c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600 +000000000000c6c600c6c6c6c600c6c6c6c600c6c600000000000000c6c600c6c6c600c6c6c600 +c6c600c6c6c6c600c6c600c6c6c600c6c6c6c6c6000000c6c600c6c600c6c6c6c600c6c6000000 +00000000c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600 +c6c6c6c6c6c6c6c600c6c6c6c600c6c6c6c600c6c600c6c6c6c6c6c6c6c600c6c6c600c6c6c600 +c6c600c6c6c6c600c6c600c6c6c600c6c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6 +c6c6c6c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c600 +c6c6c6c6c600c6c600c6c6c6c600c6c6c6c600c6c600c6c6c6c6c600c6c600c6c6c600c6c6c600 +c6c600c6c6c6c600c6c600c6c6c600c6c6c6c600c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6 +c6c6c600c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6c600c6c6c6c6 +00c6c6c600c6c6c600c6c6c6c600c6c6c6c600c6c6c600c6c6c600c6c6c600c6c600c6c6c6c600 +c6c600c6c6c6c600c6c600c6c6c600c6c6c6c600c6c6c6c60000c6c600c6c6c6c600c6c6c600c6 +c6c600c6c6c600c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600c6c600c6c6c6c600c6c6000000c6c6 +c6000000c6c6c6c600c6c6c6c600c6c6c6c600c6c6c6c6000000c6c6c6c600000000c6c6c6c600 +c6c600c6c6c6c600c6c6000000c600c6c6c6c6c600000000c600c6c600c6c6c6c600c6c6c6c600 +0000c6c6c6c6000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffff +ff00000000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 +00c6c6c6c6c600000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000c6c6c6c6 +c6c60000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000ffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffff00000000 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000 +ffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffff +ffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffff +ffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffff +ffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffff +ffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c60000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00000000c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6000000000000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000000000c6c6c6c6c6c6c6c6c6c6 +c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c600000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff000000000000000000000000000000c6c6c6c6c6c6 +c6c6c6000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000c6 +c6c6c6c6c6c6c6c6000000000000000000000000000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000ff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00ffffffffffffffffffffffff00ff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00ffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff0000000000ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff00ffffff00ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000ffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff0000000000ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffff000000000000ffffffffff0000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffff000000000000000000ffffffff0000ffffff00ffff00ffffffff0000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffff000000ff0000ffffff00ffff00ffffffff0000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffff000000ff0000ffffff00ffff00ffffffff0000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff00ffffffffff00ffffff000000ffffffff0000ff00ffff00ffffff00ffffff000000ffff +ffff000000ffff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff00ffffffffff00ffff00ffffff00ffff00ffff0000ffff00ffffff00ffff00ffffff00ff +ff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff000000000000ffffff00ffffff00ffff00ffffff00ffff00ffffff00ffff00ffffff00ff +ff00ffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff00ffffff00ffffffff0000000000ffff00ffffff00ffff00ffffff00ffff0000000000ff +ffff000000ffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff00ffffffff00ffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffffffff +ffffffffff00ffff00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff00ffffffff00ffffff00ffffff00ffff00ffff0000ffff00ffffff00ffff00ffffff00ff +ff00ffffff00ffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000ffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffff00ffffffffff00ffffff000000ffffffff0000ff00ffffff00000000ffffff000000ffff +ffff000000ffffff0000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000ffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ff00000000ffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00000000ff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff0000ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff0000ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff0000ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff0000ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff00ff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff00ff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffffffffffffffffffffff00ffffffff00ff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffff0000ff00ffff00ffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffffffff0000ffffff00ffff00ffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ffffffffffffffffffffff0000ffffffffffff00ff00ffff00ffff000000 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffff0000ffffffffffffffff0000ffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffff00ffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff0000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00ffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff0000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffff0000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00ffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffff00000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffffffffffff +ff00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff0000ffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ff0000ffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffffff0000ffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffff0000ffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffff00000000000000 +000000000000000000000000000000000000000000000000000000000000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000ff00000000000000 +000000000000000000000000000000000000000000000000000000000000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffff0000ffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ff00ffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000ffffffffffffffffffffffffffff00ffffffffff00000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00000000ff0000ffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffff0000ff00ffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffff000000ffffff000000ffff00ffffffff00ffffffffffffff000000ffff00 +ff00ff00ffffff00ffff000000ffff00ff00ffffffff00ff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff000000ffffff0000ffff00ff0000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000ffff00ffffff00ff00ffffff00ff00ffffffffff0000ffffffff00ffffff00ff00 +00ffff00ffffff00ff00ffffff00ff0000ffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff000000ff00ff0000ffff00ff0000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff00ffffff0000000000ffff00000000ff00ffffffffffffff0000ffff0000000000ff00 +ffffffff00ff00ffff0000000000ff00ffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffff00ffff00ffffffff00000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffff00ffff00ffffffffff00ffffff00ff00ffffffffffffffffff00ff00ffffffffff00 +ffffffff00ff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00000000ffffff00ff0000ffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffff00ffff00ffffff00ff00ffff0000ff00ffffffff00ffffffff00ff00ffffff00ff00 +ffffffffff00ffffff00ffffff00ff00ffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ffff0000ffffff00ffff000000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffff000000ffffff0000ff00ff00ffffffffff00000000ffffff000000ffff00 +ffffffffff00ffffffff000000ffff00ffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000000000ffff00ffffffff000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffff00ffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff000000ff0000ffffff00ffff000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff +000000ffff0000ffffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000 +ffff00ffffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff000000ff +ffffff00ffffff00ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff0000ffff0000 +ffffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00 +ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffffffff +00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffff0000ffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ff0000ffffffffffffff00ffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ff0000ff00ffffffffffffff00000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffff000000ffffff00ffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000000000ffffff0000ffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffff00ff0000ffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00000000ffff0000ffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffff00ffff0000ffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffff0000ffff00ff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffff00ffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffffffff000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000ff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00ffffffffffffffffffffffff00ff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00ffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000000000000000000000000000000000000000000000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffff00ffff000000000000000000000000000000000000000000ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff0000000000ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffff00ffff00ff000000000000000000000000000000ff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000ffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000ffffffffffffffffffffffff00ff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff00ffffff00ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000ffffffffffffffffffffffffff0000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff0000000000ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffff0000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffff000000000000ffffffffff0000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff000000000000ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffff000000000000000000ffffffff0000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff00ffffffff00ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffff000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffff000000ff0000ffffff00ffff00ffffffff0000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff00ffffffff00ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffff000000000000ffff00ff00ffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffff0000000000ffffffffff00ff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ff00 +00000000000000000000ffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffff00000000000000000000ffffff00ff00ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff0000ffffff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffff0000000000ff0000000000ff00ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000ffffffffff00ffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffffffff00ffff00ff00 +00000000000000000000ffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffff0000000000ff00ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000ffffffffff00ffffffffffffffffffffffffffffff0000ffffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000ffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffffffffff0000ffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff00ff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffffff0000ffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff000000000000000000000000ffffffffffffffffffff0000ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffff000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffff0000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffff0000ffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ff0000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffff0000ffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff00ff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ff0000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffff0000ffffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffff0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff000000000000000000000000ffffffffff00ffff00ffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffff0000ffffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffff000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00000000000000000000ffffffffffffffffffffffffffffffffff00ff00ffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000ffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff000000ffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff +ffffffffffffffffffffffffffffff0000ffff0000000000000000000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffff0000ffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ff000000000000ffffffffffffffff00ffffffff +ffffff00ffffff000000000000000000000000ff00ffffffff00ff00ffffffffffffffffffffff +ffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffff00ffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ff00ffffffff0000ffffffffffffff0000000000 +0000000000000000ffff00ffff0000ffff0000ff000000000000ff0000ffffffffffffffffffff +ffffff0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffff0000ffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffff00ffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ff0000ff000000000000000000000000ffffff00 +ffffff00ffff0000ffff0000ffff00ffffff00ff00ffffffffffffff00ff000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffff00ffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000000000000000000000ffffff00ffffffffffffff00ffffff00 +00ffffff00ffff00ffffff00ffff00ffffff000000000000000000000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000000000000000000000ffffffffffff00ffff0000000000ffffffffffffffff00ffffffff +00ffffff00ffff000000000000000000000000ffffff000000ffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000ffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 +ffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffff0000000000 +0000000000000000ffffff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000000000000000000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffff00ff000000000000000000000000ffffffff +000000ff00ffff00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffff00ffff00ff00ffffffffffffffffffffffffffffff00ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000000000000000000000ffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ff0000000000000000000000000000000000ff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffff00000000000000 +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000000000000000000000ffffffffffff00ffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffff000000000000000000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000000000000000000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff00ffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffff00000000000000 +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff000000000000000000000000000000000000000000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffff000000000000000000000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00ff00ffffffffff00ffffffffffffffffffffffffffff00ffffffff00ff00000000ff +ffffffffffffff00ffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffff00ffffffffffffff00ffffffffffffffffffffffffffff00ffffffff00ff00ffffff00 +ffffffffffff00ff00ffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff000000000000000000ff0000ff0000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffff00ffff00ff00ff00000000ff00ffffff00ffff000000ffff00ffffffff00ff00ffffff00 +ffffffffffff00ff00ffffffff0000ff00ffff0000ff00ff00ff00ffff000000ffffff000000ff +ffff00000000ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffff00ffff00ff0000ffff00ffff00ffffff00ff00ffffff00ff00ffffffff00ff00ffffff00 +ffffffffffff00ff00ffffff00ffff0000ff00ffff0000ff0000ffff00ffffff00ff00ffffff00 +ff00ffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff0000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ff00ffffff00ff00ffffff00ffff00ffffff00ffff00000000ff00ffffffff00ff00000000ff +ffffffffff00ffffff00ffff00ffffff00ff00ffffff00ff00ffffff0000000000ffff0000ffff +ffff0000ff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00ffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff0000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ff00ffffff00ff00ffffff00ffff00ffffff00ff00ffffff00ff00ffffffff00ff00ffffffff +ffffffffff0000000000ffff00ffffff00ff00ffffff00ff00ffffff00ffffffffffffffff00ff +ffffffff0000ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ff00ffffff00ffff00ffff0000ff00ffff0000ff00ffffffff00ff00ffffffff +ffffffff00ffffffffff00ff00ffff0000ff00ffff0000ff00ffffff00ffffff00ff00ffffff00 +ff00ffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ff00ffffff0000ffff0000ff00ffff0000ff00ff00ffffffff00ff00ffffffff +ffffffff00ffffffffff00ffff0000ff00ffff0000ff00ff00ffffffff000000ffffff000000ff +ffff00000000ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffff00000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffffffffff00 +0000ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffffffffffff +ffff0000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ff0000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff0000ffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ff0000ffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffff0000000000 +00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff +ffffffffffffffffff00000000ff00ffffffffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffff0000ffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff000000000000000000ff0000ff0000ffff00ffff00ffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffff000000000000ffffffffffffffff0000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffff0000ffffffff00000000000000 +000000000000000000000000000000000000000000000000000000000000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff000000000000000000ff0000ff0000ffff00ffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000ffff0000ffffffffffffffffff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffffffffffffff +ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 +000000ffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000ff00000000000000 +000000000000000000000000000000000000000000000000000000000000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffffffffffffff +ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000ffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff0000ffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ff00ffff0000ff0000ff00ff0000ff0000ff00ff0000ff0000ffff00ff0000ffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffff00ffff0000ff0000ff000000000000000000ff0000ff0000ffff00ffffff0000ffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff0000 +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff0000 +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff0000ffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +0000ffff0000000000000000000000000000000000000000000000000000000000000000000000 +000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000ffffffffffffffffffffffffffff00ffffffffff00000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffff000000ffffff000000ffff00ffffffff00ffffffffffffff000000ffff00 +ff00ff00ffffff00ffff000000ffff00ff00ffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ff0000000000000000000000000000000000000000000000000000000000000000000000 +000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000ffff00ffffff00ff00ffffff00ff00ffffffffff0000ffffffff00ffffff00ff00 +00ffff00ffffff00ff00ffffff00ff0000ffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff000000ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff00ffffff0000000000ffff00000000ff00ffffffffffffff0000ffff0000000000ff00 +ffffffff00ff00ffff0000000000ff00ffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffff00ffff00ffffffffff00ffffff00ff00ffffffffffffffffff00ff00ffffffffff00 +ffffffff00ff00ffff00ffffffffff00ffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffff00ffff00ffffff00ff00ffff0000ff00ffffffff00ffffffff00ff00ffffff00ff00 +ffffffffff00ffffff00ffffff00ff00ffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffff000000ffffff0000ff00ff00ffffffffff00000000ffffff000000ffff00 +ffffffffff00ffffffff000000ffff00ffffffffffff0000000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff000000 +0000ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffff +ffff00ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffff000000ffffffff000000ffffffff0000ff00ffffffffff00ffff +ffff00ffffff000000ffffff00ffffff000000ffffff00ff0000ffffffff0000ffffffff000000 +ffffff00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffff0000ffffffffff00ffff +ffff00ffff00ffffff00ffff00ffff00ffffff00ffff0000ffff00ffff00ffff00ffff00ffffff +00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffff00ffffff00ffffffffffff00ffff00ffffff00ffffffffff000000 +000000ffffffffffff00ffff00ffffffffffff00ffff00ffffff00ffff00ffffffffff00ffffff +00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff0000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffff00ffffffffffff00ffffff00ffffff00000000ffff00ffffff00ffffffffff00ffff +ffff00ffffff00000000ffff00ffffff00000000ffff00ffffff00ffff00ffffffffff00000000 +00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffff00ffffffffffff00ffffff00ffff00ffffff00ffff00ffffff00ffffffffff00ffff +ffff00ffff00ffffff00ffff00ffff00ffffff00ffff00ffffff00ffff00ffffffffff00ffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffff00ffffffffffff00ffffff00ffff00ffff0000ffff00ffffff00ffffffffff00ffff +ffff00ffff00ffff0000ffff00ffff00ffff0000ffff00ffffff00ffff00ffff00ffff00ffffff +00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffff000000000000ffff000000ffffffff0000ff00ffffff00000000ffffffffff000000 +0000ffffffff0000ff00ffff00ffffff0000ff00ffff00ffffff00ffffff0000ffffffff000000 +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff000000ffffffffffffffff0000ff00ffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffff000000ff00ff000000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffffffffff00ffff0000ffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ff0000ffffff00ffffff +00ff00ffffff00ffffffff00ffffffff00ffffff000000ffff00ffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffff0000ffff00ff0000ff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff0000ffff00ffff00ffffff +00ffff00ff00ffffffffff00ffffffff00ffff00ffffff00ffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ff00ffff000000ffff0000ffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffff +00ffff00ff00ffffffffff000000000000ffff00ffffff00ffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff000000ff00ffff00000000000000ffff000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffff +00ffffff00ffffffffffff00ffffffff00ffff00ffffff00ffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffff0000ffffffffffffffffff0000ffff000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffff +00ffff00ff00ffffffffff00ffffffff00ffff00ffffff00ffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ff0000ffffffffffffffffff000000ffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffff00ffff00ffffff00ffff00ffffff +00ffff00ff00ffffffffff00ffffffff00ffff00ffffff00ffff00ff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffff000000000000ff00ffff00ffffff00ffffff000000 +00ff00ffffff00ffffffff0000000000ffffffff000000ffff00ffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff00ffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000 +0000ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffffffff +00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00 +00ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff00 +ffffff0000ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000 +ffffff00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +00000000ffff0000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffff0000ffff00ffffff00ff000000ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +000000ff000000ffffff00ff0000ff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffff00ff00ffffff000000ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffff0000ffff00ffffff00ffff000000ffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000000000ffffff00ff0000ff000000ffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ff000000ffff0000ffff00ff00000000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00000000ffff000000ffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffff00ffff0000ff0000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00000000ffffff00ffffffff0000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000000000ff00ffffffffffff000000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ff0000ffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff +ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000ff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00ffffffffffffffffffffffff00ff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00ffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffff000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff000000ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff000000ffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff0000000000ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff00ffffff00ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +00000000000000000000000000ffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff00ffffff00ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffff0000000000ffffff0000ffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff +ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffff000000000000ffffffffff0000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff +ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffff000000000000000000ffffffff0000ffffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff +ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffff000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffff000000ff0000ffffff00ffff00ffffffff0000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000ffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff0000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff000000ffffffffffffffff000000ffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffffffffffffffff0000ffffffffffffffffff00ffff00ffff00ff00 +ffffffffffffffffffffff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffff0000ffffffffffffff00ffff00ffff00ff00 +00000000000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffffffffffffffff0000ffffffff00ff00ff00ffff00ff00 +00000000000000000000ff000000ff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff000000ffffffffffffffff0000ffff00ff00ff00ffff00ff00 +00000000000000000000ffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffffffffffffff0000ffff00ff00ffff00ff00 +00000000000000000000ffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff0000ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff0000ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000ff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ff0000ffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +ffffffffffffffffffffffffffffff0000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff +ffffffffffffffffffffffffffffffff00ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff000000 +0000000000000000000000000000000000ffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffff000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff0000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000ffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffff000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffff00000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff0000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00ffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff0000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffff00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffff00000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffffffffffff +ff00000000000000000000000000000000000000000000000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff0000ffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00ff00ff0000 +ff00ff0000ff0000ff00ff0000ff0000ff00ffff00ff0000ffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ff00000000 +0000ff0000ff0000ff000000000000000000ffff00ffffff0000ffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffff0000ffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffff0000ffff00000000000000 +000000000000000000000000000000000000000000000000000000000000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000ff00000000000000 +000000000000000000000000000000000000000000000000000000000000000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000ffffffffffffffffffffffffffff00ffffffffff00000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffff000000ffffff000000ffff00ffffffff00ffffffffffffff000000ffff00 +ff00ff00ffffff00ffff000000ffff00ff00ffffffff00000000ffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000ffff00ffffff00ff00ffffff00ff00ffffffffff0000ffffffff00ffffff00ff00 +00ffff00ffffff00ff00ffffff00ff0000ffffffffff00ffffff00ffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffff00ffffff0000000000ffff00000000ff00ffffffffffffff0000ffff0000000000ff00 +ffffffff00ff00ffff0000000000ff00ffffffffffff00ffffff00ffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffff00ffff00ffffffffff00ffffff00ff00ffffffffffffffffff00ff00ffffffffff00 +ffffffff00ff00ffff00ffffffffff00ffffffffffff00ffffff00ffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffff00ffff00ffffff00ff00ffff0000ff00ffffffff00ffffffff00ff00ffffff00ff00 +ffffffffff00ffffff00ffffff00ff00ffffffffffff00ffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffff00ffff000000ffffff0000ff00ff00ffffffffff00000000ffffff000000ffff00 +ffffffffff00ffffffff000000ffff00ffffffffffff00ffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffff0000ff0000ffffffffffffffffff00 +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff0000000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffff0000ff0000ffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00000000000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffff0000 +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff0000ffffffff000000 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffff0000ffff0000ffff0000ff0000000000 +0000ff0000ffffffff0000ffffff0000000000ffffff0000ffffffffffff0000ffffffffff0000 +ffffffff000000ffffffff0000ff0000ff0000ffffff0000ffffffff000000ffffffff0000ff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ffff0000000000000000 +0000ff0000ffffffff0000ffff00000000000000ffff0000ffffffffffff00000000ffffffffff +ffffff0000000000ffffff0000000000ff0000ffffff0000ffffff0000000000ffffff00000000 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ffff000000ffffff0000 +ffffff0000ffffffff0000ffff0000ffffff0000ffff0000ffffffffffffff000000000000ffff +ffff0000ffffff0000ffff000000ffffff0000ffffff0000ffff0000ffffff0000ffff000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ffff0000ffffffff0000 +ffffff0000ffffffff0000ffffffffff00000000ffff0000ffffffffffffffffff0000000000ff +ffff00000000000000ffff0000ffffffffff0000ff0000ffffff00000000000000ffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ff0000ffffffff0000ffff0000ffffffff0000 +ffffff0000ffffffff0000ffffff000000000000ffff0000ffffffffffffffffffffffff000000 +ffff00000000000000ffff0000ffffffffff0000ff0000ffffff00000000000000ffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ff0000ffffffff0000ffff0000ffffffff0000 +ffffff0000ffffffff0000ffff000000ffff0000ffff0000ffffffffffff0000ffffffffff0000 +ffff0000ffffffffffffff0000ffffffffff0000ff0000ffffff0000ffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffff0000ffffffff0000 +ffffff0000ffffff000000ffff0000ffffff0000ffff0000ffffffffffff000000ffffff000000 +ffff000000ffff0000ffff0000ffffffffffff000000ffffffff000000ffff0000ffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffff0000ffffffff0000 +0000ff0000000000000000ffff00000000000000ffff0000ffffffffffffff00000000000000ff +ffffff0000000000ffffff0000ffffffffffff000000ffffffffff0000000000ffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffff0000ffffffffff00 +0000ffff00000000ff0000ffffff00000000ff0000ff0000ffffffffffffffff0000000000ffff +ffffffff000000ffffffff0000ffffffffffff000000ffffffffffff000000ffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff0000ffff000000 +00000000ffffffffffffff00000000000000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff0000ffff000000 +0000000000ffffffffffff00000000000000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000ff +ffffff000000ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffff0000ffff0000ffffff0000000000ffffffffffffff0000ffff0000ff +ffffffff0000ffffffffffffffffff0000ffffffffff0000ffffffff0000ffff0000ff00000000 +ffffff0000ff00000000ffffffffff000000ffffffff0000ffff0000ffff0000ff00000000ffff +ffffff000000ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffff0000ffff0000ffff00000000000000ffffffffffff0000ffff0000ff +ffffff000000ffffffffffffffffff0000ffffffffff0000ffffffff0000ffff00000000000000 +00ffff0000000000000000ffffff0000000000ffffff0000ffff0000ffff0000000000000000ff +ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffff0000ffff0000ffff0000ffffff0000ffffffffffff0000ffff000000 +0000000000ffffffffffffffffffff0000ffffffffff0000ffffffff0000ffff000000ffffff00 +00ffff000000ffffff0000ffff0000ffffff0000ffff0000ffff0000ffff000000ffffff0000ff +ff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ff0000ffffff0000ffffffffff00000000ffffffffffff0000ffff000000 +00000000ffffffffffffffffffffff0000ffffffffff0000ffffffff0000ffff0000ffffffff00 +00ffff0000ffffffff0000ffff00000000000000ffff0000ffff0000ffff0000ffffffff0000ff +ff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ff0000ffffff0000ffffff000000000000ffffffffffff0000ffff0000ff +ffffffffffffffffffffffffffffff0000ffffffffff0000ffffffff0000ffff0000ffffffff00 +00ffff0000ffffffff0000ffff00000000000000ffff0000ffff0000ffff0000ffffffff0000ff +ff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0000ff0000ffffff0000ffff000000ffff0000ffffffffffff0000ffff0000ff +ffffffffffffffffffffffffffffff0000ffffffffff0000ffffffff0000ffff0000ffffffff00 +00ffff0000ffffffff0000ffff0000ffffffffffffff0000ffff0000ffff0000ffffffff0000ff +ff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff000000ffffffff0000ffff0000ffffff0000ffffffffffff0000ffff0000ff +ffffffffffffffffffffffffffffff0000ffffffffff0000ffffff000000ffff0000ffffffff00 +00ffff0000ffffffff0000ffff000000ffff0000ffff0000ffff0000ffff0000ffffffff0000ff +ff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff000000ffffffff0000ffff00000000000000ffffffffffff0000ffff0000ff +ffffffffffffffffffffffffffffff0000ffffffffff0000000000000000ffff0000ffffffff00 +00ffff0000ffffffff0000ffffff0000000000ffffff0000ffff0000ffff0000ffffffff0000ff +ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff000000ffffffff0000ffffff00000000ff0000ffffffffff0000ffff0000ff +ffffffffffffffffffffffffffffff0000ffffffffffff00000000ff0000ffff0000ffffffff00 +00ffff0000ffffffff0000ffffffff000000ffffffff0000ffff0000ffff0000ffffffff0000ff +ffffff000000ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 +ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffff0000 +00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff00000000ffffffff00000000ffffffff00ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +showpage +end +%%EOF +%%EndDocument +end PEND(Figure 4: Architecture of a virtual serv)173.79 580.064 Q +(er via IP tunneling)-.15 E .197(The w)72 601.664 R(ork\215o)-.1 E 2.697 +(wo)-.25 G 2.697(fv)-2.697 G .197(irtual serv)-2.697 F .197 +(er via IP tunneling is as follo)-.15 F .196 +(ws: When a user accesses the service pro)-.25 F .196(vided by)-.15 F +.823(the serv)72 613.664 R .823(er cluster)-.15 F 3.323(,t)-.4 G .823 +(he pack)-3.323 F .824(et destined for virtual IP address \(the IP addr\ +ess for the load balancer\) arri)-.1 F -.15(ve)-.25 G(s.).15 E 1.494 +(The load balancer e)72 625.664 R 1.493(xamines the pack)-.15 F(et')-.1 +E 3.993(sd)-.55 G 1.493(estination address and port. If the)-3.993 F +3.993(ya)-.15 G 1.493(re matched for a virtual)-3.993 F(serv)72 637.664 +Q 1.268(er service, a real serv)-.15 F 1.268(er is chosen from the clus\ +ter by a scheduling algorithm, and the connection is)-.15 F .084(added \ +into the hash table which record all established connections. Then, the\ + load balancer encapsulates the)72 649.664 R(pack)72 661.664 Q .834 +(et within an IP datagram and forw)-.1 F .835 +(ards it to the chosen serv)-.1 F(er)-.15 E 3.335(.W)-.55 G .835 +(hen the incoming pack)-3.335 F .835(et belongs to)-.1 F .365 +(this connection and the chosen serv)72 673.664 R .364 +(er can be found in the hash table, the pack)-.15 F .364(et will be ag) +-.1 F .364(ain encapsulated)-.05 F .894(and forw)72 685.664 R .894 +(arded to the serv)-.1 F(er)-.15 E 3.394(.W)-.55 G .894(hen the serv) +-3.394 F .894(er recei)-.15 F -.15(ve)-.25 G 3.394(st).15 G .894 +(he encapsulated pack)-3.394 F .894(et, it decapsulates the pack)-.1 F +(et)-.1 E .553(and processes the request, \214nally returns the result \ +to the user directly)72 697.664 R 3.052(.W)-.65 G .552 +(hen the connection terminates or)-3.052 F +(timeouts, the connection record will be remo)72 709.664 Q -.15(ve)-.15 +G 2.5(df).15 G(rom the hash table.)-2.5 E EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-8-)282.17 48 Q .54(Note that real serv)72 84 R +.54(ers can ha)-.15 F .84 -.15(ve a)-.2 H .84 -.15(ny r).15 H .541 +(eal IP address in an).15 F 3.041(yn)-.15 G(etw)-3.041 E .541(ork, the) +-.1 F 3.041(yc)-.15 G .541(an be geographically distrib)-3.041 F(uted,) +-.2 E -.2(bu)72 96 S 3.565(tt).2 G(he)-3.565 E 3.565(ym)-.15 G 1.065 +(ust support IP encapsulation protocol and the)-3.565 F 3.565(ya)-.15 G +1.065(ll ha)-3.565 F 1.365 -.15(ve o)-.2 H 1.065(ne of their tunnel de) +.15 F 1.065(vices con\214gured)-.25 F 1.159(with , lik)-.6 F 3.659(e")-.1 G 1.159(ifcon\214g tunl0 " in Linux.)-.6 F 1.16 +(When the encapsulated)6.16 F(pack)72 120 Q .275(et arri)-.1 F -.15(ve) +-.25 G .274(s, the real serv).15 F .274 +(er decapsulates it and \214nds that the pack)-.15 F .274 +(et is destined for ,)-.6 F(so it proce\ +sses the request and returns the result directly to the user in the end\ +.)72 132 Q/F1 15/Times-Bold@0 SF 3.75(3.3. Adv)72 162 R +(antages and Disadv)-.15 E(antages)-.15 E/F2 14/Times-Bold@0 SF 3.5 +(3.3.1. V)72 192 R(irtual ser)-.518 E -.14(ve)-.14 G 3.5(rv).14 G(ia N) +-3.5 E -1.33(AT)-.28 G F0 .452(The adv)72 214.8 R .452 +(antage of the virtual serv)-.25 F .452(er via N)-.15 F 2.672 -1.11 +(AT i)-.35 H 2.952(st)1.11 G .452(hat real serv)-2.952 F .452 +(ers can run an)-.15 F 2.953(yo)-.15 G .453 +(perating system that supports)-2.953 F .865(TCP/IP protocol, real serv) +72 226.8 R .864(ers can use pri)-.15 F -.25(va)-.25 G .864 +(te Internet addresses, and only an IP address is needed for the).25 F +(load balancer)72 238.8 Q(.)-.55 E .89(The disadv)72 254.4 R .89 +(antage is that the scalability of the virtual serv)-.25 F .891 +(er via N)-.15 F 3.111 -1.11(AT i)-.35 H 3.391(sn)1.11 G .891(ot v) +-3.391 F .891(ery good. The load balancer)-.15 F .601 +(may be a bottleneck of the whole system when the number of serv)72 +266.4 R .6(er nodes increase to around 25 or more)-.15 F .144 +(which depends on the throughout of real serv)72 278.4 R .145 +(ers, because both the request pack)-.15 F .145(ets and the reply pack) +-.1 F .145(ets are)-.1 F .771(need to be re)72 290.4 R .771 +(written by the load balancer)-.25 F 3.271(.S)-.55 G .771 +(upposing the a)-3.271 F -.15(ve)-.2 G .77(rage length of TCP pack).15 F +.77(ets is 536 Bytes, the)-.1 F -2.25 -.2(av e)72 302.4 T .109 +(rage delay of re).2 F .109(writing a pack)-.25 F .109 +(et is around 60us \(on the Pentium processor)-.1 F 2.61(,t)-.4 G .11 +(his can be reduced a little by)-2.61 F .986(using of f)72 314.4 R .986 +(aster processor\), the maximum throughout of the load balancer is 8.93\ + Mbytes/s. The load bal-)-.1 F(ancer can schedule 22 real serv)72 326.4 +Q(ers if the a)-.15 E -.15(ve)-.2 G(rage throughout of real serv).15 E +(ers is 400KBytes/s.)-.15 E -.6(Vi)72 342 S 1.643(rtual serv).6 F 1.643 +(er via N)-.15 F 3.863 -1.11(AT c)-.35 H 1.644 +(an meet the performance request of man)1.11 F 4.144(ys)-.15 G(erv) +-4.144 E 4.144(ers. When)-.15 F 1.644(the load balancer is)4.144 F .524 +(becoming a bottleneck of the whole system, there are tw)72 354 R 3.024 +(om)-.1 G .524(ethods to solv)-3.024 F 3.024(ei)-.15 G .524 +(t, one is the virtual serv)-3.024 F .524(er via)-.15 F .824 +(IP tunneling, and the other is the h)72 366 R .824 +(ybrid approach. In the h)-.05 F .824(ybrid approach, there are man)-.05 +F 3.325(yl)-.15 G .825(oad balancers)-3.325 F .977(which all ha)72 378 R +1.276 -.15(ve t)-.2 H .976(heir o).15 F .976(wn serv)-.25 F .976(er clu\ +sters, and the load balancers are grouped at a single domain name by) +-.15 F(Round-Round DNS.)72 390 Q F2 3.5(3.3.2. V)72 420 R(irtual ser) +-.518 E -.14(ve)-.14 G 3.5(rv).14 G(ia IP tunneling)-3.5 E F0 2.304 -.8 +(We c)72 442.8 T .704(an see from man).8 F 3.204(yI)-.15 G .705 +(nternet services \(such as web service\) that the incoming pack)-3.204 +F .705(ets are al)-.1 F -.1(wa)-.1 G .705(ys short).1 F .06 +(and reply pack)72 454.8 R .06(ets al)-.1 F -.1(wa)-.1 G .06 +(ys carry lar).1 F .059(ge amount of data. In the virtual serv)-.18 F +.059(er via IP tunneling, the load balancer)-.15 F .564 +(just schedules requests to the dif)72 466.8 R .565(ferent real serv) +-.25 F .565(ers, and the real serv)-.15 F .565 +(ers return replies directly to the users.)-.15 F 1.441(Thus the load b\ +alancer can handle huge amount of requests; it may schedule o)72 478.8 R +-.15(ve)-.15 G 3.94(r1).15 G 1.44(00 real serv)-3.94 F 1.44(ers and)-.15 +F -.1(wo)72 490.8 S(n').1 E 3.711(tb)-.18 G 3.711(et)-3.711 G 1.211(he \ +bottleneck of the system. Therefore, using IP tunneling will greatly in\ +crease the maximum)-3.711 F .388(number of serv)72 502.8 R .388 +(er nodes for a load balancer)-.15 F 2.888(.T)-.55 G .388 +(he maximum throughout of the virtual serv)-2.888 F .387(er may reach o) +-.15 F -.15(ve)-.15 G(r).15 E(1Gbps, e)72 514.8 Q -.15(ve)-.25 G 2.5(ni) +.15 G 2.5(ft)-2.5 G(he load balancer just has 100Mbps full-duple)-2.5 E +2.5(xn)-.15 G(etw)-2.5 E(ork adapter)-.1 E(.)-.55 E 1.151 +(The IP tunneling feature can be used to b)72 530.4 R 1.151(uild a v)-.2 +F 1.151(ery high-performance virtual serv)-.15 F(er)-.15 E 3.652(,e)-.4 +G 1.152(xtremely good to)-3.802 F -.2(bu)72 542.4 S .056 +(ild a virtual proxy cache serv).2 F(er)-.15 E 2.555(,b)-.4 G .055 +(ecause when the proxy serv)-2.555 F .055(ers recei)-.15 F .355 -.15 +(ve r)-.25 H .055(equest, it can access the Internet).15 F +(directly to fetch objects and return them directly to the users.)72 +554.4 Q(Ho)72 570 Q(we)-.25 E -.15(ve)-.25 G 1.752 -.4(r, v).15 H .952 +(irtual serv).4 F .952(er via IP tunneling requires real serv)-.15 F +.952(ers support IP T)-.15 F .953(unneling protocol. This feature)-.45 F +.636(has been tested with serv)72 582 R .636(ers running Linux.)-.15 F +.636(Since the IP tunneling protocol is becoming a standard of all)5.636 +F .942(operating systems, virtual serv)72 594 R .942 +(er via IP tunneling should be applicable to serv)-.15 F .943 +(ers running other operating)-.15 F(systems.)72 606 Q/F3 16/Times-Bold@0 +SF 4(4. Scheduling)72 639 R(Algorithms)4 E F0 3.056 -.8(We h)72 669 T +-2.25 -.2(av e).8 H 1.455 +(implemented four scheduling algorithms for selecting a serv)4.156 F +1.455(er from the cluster: Round-Robin,)-.15 F -.8(We)72 681 S 1.375 +(ighted Round-Robin, Least-Connection and W).8 F 1.375 +(eighted Least-Connection. The \214rst tw)-.8 F 3.875(oa)-.1 G 1.375 +(lgorithms are)-3.875 F(self-e)72 693 Q(xplanatory)-.15 E 3.299(,b)-.65 +G .799(ecause the)-3.299 F 3.299(yd)-.15 G(on')-3.299 E 3.299(th)-.18 G +-2.25 -.2(av e)-3.299 H(an)3.499 E 3.299(yl)-.15 G .799 +(oad information about the serv)-3.299 F .798(ers. The last tw)-.15 F +3.298(oa)-.1 G(lgorithms)-3.298 E .139(count acti)72 705 R .439 -.15 +(ve c)-.25 H .139(onnection number for each serv).15 F .14 +(er and estimate their load based on those connection numbers.)-.15 F EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-9-)282.17 48 Q/F1 15/Times-Bold@0 SF 3.75 +(4.1. Round-Robin)72 84 R(Scheduling)3.75 E F0 1.196 +(Round-robin scheduling algorithm, in its w)72 106.8 R 1.196 +(ord meaning, directs the netw)-.1 F 1.196(ork connections to the dif) +-.1 F(ferent)-.25 E(serv)72 118.8 Q .185(ers in the round-robin manner) +-.15 F 2.686(.I)-.55 G 2.686(tt)-2.686 G .186(reats all real serv)-2.686 +F .186(ers as equals re)-.15 F -.05(ga)-.15 G .186 +(rdless of number of connections or).05 F .286 +(response time. Although the round-robin DNS w)72 130.8 R .285 +(orks in this w)-.1 F(ay)-.1 E 2.785(,t)-.65 G .285(here are quite dif) +-2.785 F .285(ferent. The round-robin)-.25 F .404(DNS resolv)72 142.8 R +.404(es the single domain to the dif)-.15 F .405 +(ferent IP addresses, the scheduling granularity is host-based, and)-.25 +F .203(the caching of DNS hinder the algorithm tak)72 154.8 R 2.703(ee) +-.1 G -.25(ff)-2.703 G .203 +(ect, which will lead to signi\214cant dynamic load imbalance).25 F .628 +(among the real serv)72 166.8 R .629 +(ers. The scheduling granularity of virtual serv)-.15 F .629(er is netw) +-.15 F .629(ork connection-based, and it is)-.1 F(more superior to the \ +round-robin DNS due to the \214ne scheduling granularity)72 178.8 Q(.) +-.65 E F1 3.75(4.2. W)72 208.8 R(eighted Round-Robin Scheduling)-.975 E +F0 1.689(The weighted round-robin scheduling can treat the real serv)72 +231.6 R 1.689(ers of dif)-.15 F 1.689 +(ferent processing capacities. Each)-.25 F(serv)72 243.6 Q .642 +(er can be assigned a weight, an inte)-.15 F .642 +(ger that indicates the processing capacity)-.15 F 3.143(.T)-.65 G .643 +(he def)-3.143 F .643(ault weight is 1.)-.1 F -.15(Fo)72 255.6 S 4.57 +(re).15 G 2.07(xample, the real serv)-4.72 F 2.07(ers, A, B and C, ha) +-.15 F 2.369 -.15(ve t)-.2 H 2.069(he weights, 4, 3, 2 respecti).15 F +-.15(ve)-.25 G(ly).15 E 4.569(,ag)-.65 G 2.069(ood scheduling)-4.569 F +1.707(sequence will be ABCABCAB)72 267.6 R 4.207(Ai)-.35 G 4.207(nas) +-4.207 G 1.707(cheduling period \(mod sum\(W)-4.207 F 4.207(i\)\). In) +-.4 F 1.708(the implementation of the)4.207 F .472(weighted round-robin\ + scheduling, a scheduling sequence will be generated according to the s\ +erv)72 279.6 R .471(er weights)-.15 F 1.465 +(after the rules of virtual serv)72 291.6 R 1.466 +(er are modi\214ed. The netw)-.15 F 1.466 +(ork connections are directed to the dif)-.1 F 1.466(ferent real)-.25 F +(serv)72 303.6 Q +(ers based on the scheduling sequence in a round-robin manner)-.15 E(.) +-.55 E .825(The weighted round-robin scheduling doesn')72 319.2 R 3.324 +(tn)-.18 G .824(eed to count the netw)-3.324 F .824 +(ork connections for each real serv)-.1 F(er)-.15 E(,)-.4 E 1.996 +(and the o)72 331.2 R -.15(ve)-.15 G 1.996(rhead of scheduling is small\ +er than dynamic scheduling algorithms, it can ha).15 F 2.296 -.15(ve m) +-.2 H 1.996(ore real).15 F(serv)72 343.2 Q .083(ers. Ho)-.15 F(we)-.25 E +-.15(ve)-.25 G .883 -.4(r, i).15 H 2.583(tm).4 G .082 +(ay lead to dynamic load imbalance among the real serv)-2.583 F .082 +(ers if the load of requests v)-.15 F(ary)-.25 E(highly)72 355.2 Q 2.5 +(.I)-.65 G 2.5(ns)-2.5 G(hort, it is still possible that most of long r\ +equests may be directed to a real serv)-2.5 E(er)-.15 E(.)-.55 E F1 3.75 +(4.3. Least-Connection)72 385.2 R(Scheduling)3.75 E F0 .456 +(The least-connection scheduling algorithm directs netw)72 408 R .456 +(ork connections to the serv)-.1 F .456(er with the least number)-.15 F +.527(of acti)72 420 R .827 -.15(ve c)-.25 H .526(onnections. This is on\ +e of dynamic scheduling algorithms, because it needs to count acti).15 F +.826 -.15(ve c)-.25 H(on-).15 E .515(nections for each serv)72 432 R +.515(er dynamically)-.15 F 3.015(.A)-.65 G 3.015(tav)-3.015 G .515 +(irtual serv)-3.015 F .515(er where there is a collection of serv)-.15 F +.516(ers with similar)-.15 F .239 +(performance, the least-connection scheduling is good to smooth distrib) +72 444 R .238(ution when the load of requests v)-.2 F(ary)-.25 E 2.5(al) +72 456 S(ot, because all long requests w)-2.5 E(on')-.1 E 2.5(th)-.18 G +-2.25 -.2(av e)-2.5 H(chance to be directed to a serv)2.7 E(er)-.15 E(.) +-.55 E .04(At a \214rst look, the least-connection scheduling can also \ +perform well e)72 471.6 R -.15(ve)-.25 G 2.54(nw).15 G .04 +(hen there are serv)-2.54 F .04(ers of v)-.15 F(arious)-.25 E .962 +(processing capacities, because the f)72 483.6 R .962(aster serv)-.1 F +.962(er will get more netw)-.15 F .962(ork connections. In f)-.1 F .962 +(act, it cannot per)-.1 F(-)-.2 E 1.214(form v)72 495.6 R 1.214 +(ery well because of the TCP')-.15 F 3.714(sT)-.55 G(IME_W)-3.714 E +1.214(AIT state. The TCP')-1.2 F 3.714(sT)-.55 G(IME_W)-3.714 E 1.214 +(AIT is usually 2 minutes,)-1.2 F 1.069(between this 2 minutes a b)72 +507.6 R 1.068(usy web site often get thousands of connections, for e)-.2 +F 1.068(xample, the serv)-.15 F 1.068(er A is)-.15 F .641(twice as po)72 +519.6 R .641(werful as the serv)-.25 F .641(er B, the serv)-.15 F .641 +(er A has processing thousands of requests and k)-.15 F .641 +(ept them in the)-.1 F(TCP')72 531.6 Q 3.2(sT)-.55 G(IME_W)-3.2 E .7 +(AIT state, b)-1.2 F .7(ut the serv)-.2 F .7(er B is lagging to get its\ + thousands of connections \214nished. So, the)-.15 F .856 +(least-connection scheduling cannot get load well balanced among serv)72 +543.6 R .856(ers with v)-.15 F .856(arious processing capaci-)-.25 F +(ties.)72 555.6 Q F1 3.75(4.4. W)72 585.6 R +(eighted Least-Connection Scheduling)-.975 E F0 1.185(The weighted leas\ +t-connection scheduling is a superset of the least-connection schedulin\ +g, in which you)72 608.4 R .556 +(can assign a performance weight to each real serv)72 620.4 R(er)-.15 E +3.057(.T)-.55 G .557(he serv)-3.057 F .557(ers with a higher weight v) +-.15 F .557(alue will recei)-.25 F .857 -.15(ve a)-.25 H(lar)72 632.4 Q +1.977(ger percentage of acti)-.18 F 2.277 -.15(ve c)-.25 H 1.977 +(onnections at an).15 F 4.477(yo)-.15 G 1.977(ne time. The virtual serv) +-4.477 F 1.976(er administrator can assign a)-.15 F .074 +(weight to each real serv)72 644.4 R(er)-.15 E 2.574(,a)-.4 G .075 +(nd netw)-2.574 F .075(ork connections are scheduled to each serv)-.1 F +.075(er in which the percentage of)-.15 F(the current number of acti)72 +656.4 Q .3 -.15(ve c)-.25 H(onnections for each serv).15 E +(er is a ratio to its weight. The def)-.15 E(ault weight is one.)-.1 E +(The weighted least-connections scheduling w)72 672 Q(orks as follo)-.1 +E(ws:)-.25 E .429(Supposing there is n real serv)97 687.6 R .429 +(ers, each serv)-.15 F .429(er i has weight W)-.15 F 2.928(i\()-.4 G +.428(i=1,..,n\) and acti)-2.928 F .728 -.15(ve c)-.25 H(onnections).15 E +.214(Ci \(i=1,..,n\), ALL_CONNECTIONS is the sum of Ci \(i=1,..,n\), th\ +e netw)97 699.6 R .215(ork connection will be)-.1 F +(directed to the serv)97 711.6 Q(er j, in which)-.15 E(\()118.48 729.6 Q +/F2 10/Times-Italic@0 SF(C)-.16 E/F3 7/Times-Italic@0 SF(j)1.648 2 M F0 +(/).836 -2 M F2(ALL)1.01 E F0(_).53 E F2(CONNECTIONS)-.16 E F0(\)/).58 E +F2(W)-.21 E F3(j)1.648 2 M/F4 10/Symbol SF(=)3.636 -2 M F0(min)2.8 E({) +1.7 -.105 M(\().105 I F2(C)-.16 E F3(i).437 2 M F0(/).752 -2 M F2(ALL) +1.01 E F0(_).53 E F2(CONNECTIONS)-.16 E F0(\)/).58 E F2(W)-.21 E F3(i) +.437 2 M F0(}).752 -2.105 M(\().105 I F2(i).01 E F4(=)3.16 E F0 -.8 +(1, . . ,)2.8 F F2(n)2.06 E F0(\)).24 E EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-10-)279.67 48 Q .506(Since the ALL_CONNECTIONS\ + is a constant in this lookup, there is no need to di)97 84 R .506 +(vide Ci by)-.25 F(ALL_CONNECTIONS, it can be optimized as)97 96 Q/F1 10 +/Times-Italic@0 SF(C)219.74 114 Q/F2 7/Times-Italic@0 SF(j)1.648 2 M F0 +(/).836 -2 M F1(W)-.21 E F2(j)1.648 2 M/F3 10/Symbol SF(=)3.636 -2 M F0 +(min)2.8 E({)1.7 -.105 M F1(C)-.16 .105 M F2(i).437 2 M F0(/).752 -2 M +F1(W)-.21 E F2(i).437 2 M F0(}).752 -2.105 M(\().105 I F1(i).01 E F3(=) +3.16 E F0 -.8(1, . . ,)2.8 F F1(n)2.06 E F0(\)).24 E .536(The weighted \ +least-connection scheduling algorithm requires additional di)72 135.6 R +.536(vision than the least-connection.)-.25 F .143 +(In a hope to minimize the o)72 147.6 R -.15(ve)-.15 G .143 +(rhead of scheduling when serv).15 F .143(ers ha)-.15 F .443 -.15(ve t) +-.2 H .143(he same processing capacity).15 F 2.643(,b)-.65 G .142 +(oth the)-2.643 F(least-connection scheduling and the weighted least-co\ +nnection scheduling algorithms are implemented.)72 159.6 Q/F4 16 +/Times-Bold@0 SF 4(5. High)72 192.6 R -.96 -1.6(Av a)4 H(ilability)1.6 E +F0 .084(As more and more critical commercial applications mo)72 222.6 R +.384 -.15(ve o)-.15 H 2.584(nt).15 G .084(he Internet, pro)-2.584 F .085 +(viding highly a)-.15 F -.25(va)-.2 G .085(ilable serv).25 F(ers)-.15 E +1.038(becomes increasingly important. One of the adv)72 234.6 R 1.037 +(antages of a clustered system is that it has hardw)-.25 F 1.037 +(are and)-.1 F(softw)72 246.6 Q .323(are redundanc)-.1 F 1.623 -.65 +(y. H)-.15 H .323(igh a).65 F -.25(va)-.2 G .323(ilability can be pro) +.25 F .324(vided by detecting node or daemon f)-.15 F .324 +(ailures and recon\214g-)-.1 F .096 +(uring the system appropriately so that the w)72 258.6 R .096 +(orkload can be tak)-.1 F .096(en o)-.1 F -.15(ve)-.15 G 2.596(rb).15 G +2.596(yt)-2.596 G .096(he remaining nodes in the cluster)-2.596 F(.)-.55 +E 1.526(The high a)72 274.2 R -.25(va)-.2 G 1.527 +(ilability of virtual serv).25 F 1.527(er is no)-.15 F 4.027(wp)-.25 G +(ro)-4.027 E 1.527(vided by using of "mon")-.15 F/F5 7/Times-Roman@0 SF +(15)-4.1 I F0 1.527(and "f)4.027 4.1 N(ak)-.1 E(e")-.1 E F5(16)-4.1 I F0 +(softw)4.027 4.1 M 1.527(are. The)-.1 F 1.457("mon" is a general-purpos\ +e resource monitoring system, which can be used to monitor netw)72 286.2 +R 1.457(ork service)-.1 F -.2(av)72 298.2 S(ailability and serv)-.05 E +(er nodes. F)-.15 E(ak)-.15 E 2.5(ei)-.1 G 2.5(sI)-2.5 G 2.5(Pt)-2.5 G +(ak)-2.5 E(e-o)-.1 E -.15(ve)-.15 G 2.5(rs).15 G(oftw)-2.5 E +(are by using of ARP spoo\214ng.)-.1 E .211(The serv)72 313.8 R .211 +(er f)-.15 F(ailo)-.1 E -.15(ve)-.15 G 2.711(ri).15 G 2.711(sh)-2.711 G +.211(andle as follo)-2.711 F .211 +(ws: The "mon" daemon is running on the load balancer to monitor ser) +-.25 F(-)-.2 E .375(vice daemons and serv)72 325.8 R .375 +(er nodes in the cluster)-.15 F 5.374(.T)-.55 G .374 +(he fping.monitor is con\214gured to detect whether the serv)-5.374 F +(er)-.15 E .445(nodes is ali)72 337.8 R .745 -.15(ve e)-.25 H -.15(ve) +-.1 G .445(ry t seconds, and the relati).15 F .745 -.15(ve s)-.25 H .445 +(ervice monitor is also con\214gured to detect the service dae-).15 F .6 +(mons on all the nodes e)72 349.8 R -.15(ve)-.25 G .6(ry m minutes. F) +.15 F .6(or e)-.15 F .6 +(xample, http.monitor can be used to check the http services;)-.15 F +.284(ftp.monitor is for the ftp services, and so on. An alert w)72 361.8 +R .284(as written to remo)-.1 F -.15(ve)-.15 G .284 +(/add a rule in the virtual serv).15 F(er)-.15 E .019 +(table while detecting the serv)72 373.8 R .019(er node or daemon is do) +-.15 F 2.519(wn/up. Therefore,)-.25 F .018 +(the load balancer can automatically)2.518 F +(mask service daemons or serv)72 385.8 Q(ers f)-.15 E +(ailure and put them into service when the)-.1 E 2.5(ya)-.15 G(re back.) +-2.5 E(No)72 401.4 Q 1.854 -.65(w, t)-.25 H .554 +(he load balancer becomes a single f).65 F .554 +(ailure point of the whole system.)-.1 F .555(In order to pre)5.555 F +-.15(ve)-.25 G .555(nt the f).15 F(ailure)-.1 E .465 +(of the load balancer)72 413.4 R 2.965(,s)-.4 G .465(etup a backup serv) +-2.965 F .465(er of the load balancer)-.15 F 2.965(,t)-.4 G .465(he "f) +-2.965 F(ak)-.1 E .465(e" softw)-.1 F .464(are is used for the backup) +-.1 F .484(to tak)72 425.4 R(eo)-.1 E -.15(ve)-.15 G 2.984(rt).15 G .484 +(he IP addresses of the load balancer when the load balancer f)-2.984 F +.484(ails. Ag)-.1 F .485(ain, the "mon" is used to)-.05 F .257 +(detect the status of the load balancer to acti)72 437.4 R -.25(va)-.25 +G(te/deacti).25 E -.25(va)-.25 G .256(te the "f).25 F(ak)-.1 E .256 +(e" on the backup serv)-.1 F(er)-.15 E 2.756(.T)-.55 G .256 +(he "mon" dae-)-2.756 F .728(mon also runs on the backup so that the ba\ +ckup has current status of the cluster)72 449.4 R 5.728(.W)-.55 G .728 +(hen the primary f)-5.728 F(ails,)-.1 E .05(the backup will tak)72 461.4 +R 2.55(eo)-.1 G -.15(ve)-2.7 G 2.55(ri).15 G .049 +(ts IP address\(es\) to continue to pro)-2.55 F .049(vide services, ho) +-.15 F(we)-.25 E -.15(ve)-.25 G 2.549(rt).15 G .049 +(he established connec-)-2.549 F .37(tion in the hash table will be los\ +t in the current implementation, which will require the clients to send\ + their)72 473.4 R(requests ag)72 485.4 Q(ain.)-.05 E F4 4(6. Conclusion) +72 518.4 R(and Futur)4 E 4(eW)-.288 G(ork)-5.2 E F0 2.073 -.8(We h)72 +548.4 T -2.25 -.2(av e).8 H .473(demonstrated ho)3.173 F 2.973(wt)-.25 G +2.973(oc)-2.973 G .473(reate Linux virtual serv)-2.973 F .473 +(ers based on a cluster of real serv)-.15 F .473(ers. T)-.15 F .672 -.1 +(wo m)-.8 H(ethods).1 E .24(of IP-le)72 560.4 R -.15(ve)-.25 G 2.74(ll) +.15 G .24(oad balancing were de)-2.74 F -.15(ve)-.25 G .24(loped to mak) +.15 F 2.74(ep)-.1 G .241 +(arallel services of the cluster to appear as a virtual ser)-2.74 F(-) +-.2 E .096(vice on a single IP address, one is virtual serv)72 572.4 R +.096(er via Netw)-.15 F .095(ork Address T)-.1 F .095 +(ranslation, the other is virtual serv)-.35 F(er)-.15 E 1.004 +(via IP tunneling. Currently four scheduling algorithms ha)72 584.4 R +1.305 -.15(ve b)-.2 H 1.005(een de).15 F -.15(ve)-.25 G 1.005 +(loped to meet dif).15 F 1.005(ferent application)-.25 F 2.555 +(situations. Scalability)72 596.4 R .055(is achie)2.555 F -.15(ve)-.25 G +2.555(db).15 G 2.555(yt)-2.555 G .055(ransparently adding or remo)-2.555 +F .054(ving a node in the cluster)-.15 F 2.554(.H)-.55 G .054(igh a) +-2.554 F -.25(va)-.2 G(ilabil-).25 E .456(ity is pro)72 608.4 R .456 +(vided by detecting node or daemon f)-.15 F .457 +(ailures and recon\214guring the system appropriately)-.1 F 2.957(.T) +-.65 G .457(he solu-)-2.957 F .917 +(tions require no modi\214cation to either the clients or the serv)72 +620.4 R .917(ers, and the)-.15 F 3.416(ys)-.15 G .916 +(upport most of TCP and UDP)-3.416 F(services.)72 632.4 Q .069 +(In the future, we w)72 648 R .069 +(ould study and add more load-balancing algorithms to meet more dif)-.1 +F .07(ferent requirements,)-.25 F .449(such as the load-informed schedu\ +ling, and geographic-based scheduling for virtual serv)72 660 R .449 +(er via IP tunneling.)-.15 F 1.83 -.8(We w)72 672 T .23(ould lik).7 F +2.73(et)-.1 G 2.73(oi)-2.73 G(nte)-2.73 E .23 +(grate the "heartbeat" code and the COD)-.15 F 2.73(Ad)-.4 G(istrib) +-2.73 E .23(uted f)-.2 F .23(ault-tolerant \214lesystem into vir)-.1 F +(-)-.2 E .942(tual serv)72 684 R(er)-.15 E 3.442(,d)-.4 G -2.15 -.25 +(ev e)-3.442 H .942(lop a cluster manager).25 F 3.442(,a)-.4 G .942 +(nd mak)-3.442 F 3.442(ei)-.1 G 3.442(te)-3.442 G .942 +(asy to setup and administrator Linux virtual serv)-3.442 F(ers.)-.15 E +1.644 -.8(We w)72 696 T .044(ould e).7 F .044(xplore higher de)-.15 F +.044(grees of f)-.15 F .044 +(ault-tolerance; transaction and logging process)-.1 F F5(17)-4.1 I F0 +-.1(wo)2.544 4.1 O .044(uld be tried to add).1 F .64(in the load balanc\ +er so that the load balancer can restart the request on another serv)72 +708 R .64(er and the client don')-.15 F(t)-.18 E .328 +(need to send the request ag)72 720 R .328 +(ain, and the primary and backup load balancers e)-.05 F .329 +(xchange their states so that the)-.15 F EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-11-)279.67 48 Q -.15(ex)72 84 S .254 +(isting connection w).15 F(on')-.1 E 2.754(tb)-.18 G 2.754(el)-2.754 G +.254(ost when the backup tak)-2.754 F .253(es o)-.1 F -.15(ve)-.15 G +1.353 -.55(r. W).15 H 2.753(ew)-.25 G .253(ould also lik)-2.853 F 2.753 +(et)-.1 G 2.753(oe)-2.753 G .253(xplore ho)-2.903 F 2.753(wt)-.25 G +2.753(oi)-2.753 G(mple-)-2.753 E(ment virtual serv)72 96 Q(er in IPv6.) +-.15 E/F1 18/Times-Bold@0 SF(Refer)72 132 Q(ences)-.324 E F0 15(1. Chad) +72 162 R -1.1(Yo)3.54 G(shika)1.1 E -.1(wa)-.15 G 3.54(,B).1 G 1.04 +(rent Chun, P)-3.54 F 1.04(aul Eastharn, Armin V)-.15 F 1.04 +(ahdat, Thomas Anderson, and Da)-1.11 F 1.04(vid Culler)-.2 F(,)-.4 E +(\231Using Smart Clients to Build Scalable Services,)97 174 Q<9a>-.7 E +/F2 10/Times-Italic@0 SF(USENIX'97)2.5 E F0(\(1997\). http://no)2.5 E +-.65(w.)-.25 G(cs.berk).65 E(ele)-.1 E -.65(y.)-.15 G(edu/.).65 E 15 +(2. Robert)72 189.6 R 1.773(L. Carter and Mark E. Cro)4.274 F -.15(ve) +-.15 G 1.773(lla, \231Dynamic Serv).15 F 1.773 +(er Selection using Bandwidth Probing in)-.15 F -.4(Wi)97 201.6 S +(de-Area Netw).4 E(orks,)-.1 E 2.5<9a42>-.7 G(oston Uni)-2.5 E -.15(ve) +-.25 G(rsity T).15 E(echnical Report \(1996\). http://www)-.7 E +(.ncstrl.or)-.65 E(g/.)-.18 E 15(3. Eric)72 217.2 R .304 +(Dean Katz, Michelle Butler)2.804 F 2.804(,a)-.4 G .304 +(nd Robert McGrath, \231)-2.804 F 2.804(AS)-.8 G .304(calable HTTP Serv) +-2.804 F .305(er: The NCSA Proto-)-.15 F(type,)97 229.2 Q<9a>-.7 E F2 +(Computer Networks and ISDN Systems,)2.5 E F0(pp. 155-163 \(May 1994\).) +2.5 E 15(4. Thomas)72 244.8 R 3.469 -.74(T. K)4.489 H -.1(wa).74 G 1.989 +(n, Robert E. McGrath, and Daniel A. Reed, \231NCSA).1 F 3.088 -.55 +('s W)-1.11 H 1.988(orld W)-.25 F 1.988(ide W)-.4 F 1.988(eb Serv)-.8 F +(er:)-.15 E(Design and Performance,)97 256.8 Q<9a>-.7 E F2 +(IEEE Computer)2.5 E(,)-1.11 E F0(pp. 68-74 \(No)2.5 E -.15(ve)-.15 G +(mber 1995\).).15 E 15(5. T)72 272.4 R 2.5(.B)-.74 G(risco,)-2.5 E F2 +(DNS Support for Load Balancing)2.5 E(,)-.1 E F0(RFC 1794. http://www) +2.5 E(.internic.net/ds/.)-.65 E 15(6. A.)72 288 R .742 +(Dahlin, M. Frober)3.242 F .742(g, J. W)-.18 F .743(alerud, and P)-.8 F +3.243(.W)-1.11 G(inroth,)-3.643 E F2 .743(EDDIE: A Rob)3.243 F .743 +(ust and Scalable Internet Server)-.2 F F0(\(May 1998\). http://www)97 +300 Q(.eddie)-.65 E -.1(wa)-.25 G(re.or).1 E(g/.)-.18 E 15(7. Ralf)72 +315.6 R 1.464(S.Engelschall, \231Load Balancing Y)3.964 F 1.464(our W) +-1.1 F 1.463(eb Site: Practical Approaches for Distrib)-.8 F 1.463 +(uting HTTP)-.2 F -.35(Tr)97 327.6 S(af).35 E(\214c,)-.25 E<9a>-.7 E F2 +-.92(We)2.5 G 2.5(bT).92 G(ec)-3.42 E(hniques Ma)-.15 E(gazine)-.1 E(,) +-.1 E F0(3, 5 \(May 1998\). http://www)2.5 E(.webtechniques.com/.)-.65 E +15(8. Edw)72 343.2 R 12.45(ard W)-.1 F(alk)-.8 E(er)-.1 E(,)-.4 E F2 +12.45(pWEB - A P)14.95 F(ar)-.8 E 12.45(allel W)-.15 F 12.45 +(eb Server Harness)-.92 F F0 12.45(\(April, 1997\).)14.95 F(http://www) +97 355.2 Q(.ihpc.nus.edu.sg/ST)-.65 E(AFF/edw)-.93 E(ard/pweb)-.1 E +(.html.)-.4 E 15(9. Daniel)72 370.8 R .507(Andresen, T)3.007 F .507 +(ao Y)-.8 F .507(ang, and Oscar H. Ibarra, \231T)-1 F -2.1 -.25(ow a)-.8 +H .506(rds a Scalable Distrib).25 F .506(uted WWW Serv)-.2 F .506(er on) +-.15 F -.8(Wo)97 382.8 S .222(rkstation Clusters,).8 F<9a>-.7 E F2(Pr) +2.722 E .222(oc. of 10th IEEE Intl. Symp. Of P)-.45 F(ar)-.8 E .223 +(allel Pr)-.15 F .223(ocessing \(IPPS'96\),)-.45 F F0 .223(pp. 850-856) +2.723 F(\(Arpil 1996\). http://www)97 394.8 Q(.cs.ucsb)-.65 E +(.edu/Research/rapid_sweb/SWEB.html.)-.4 E 10(10. Eric)72 410.4 R 1.373 +(Anderson, Da)3.873 F 1.673 -.15(ve Pa)-.2 H 1.372 +(tterson, and Eric Bre).15 F(wer)-.25 E(,)-.4 E F2 1.372(The Ma)3.872 F +(gicr)-.1 E 1.372(outer: an Application of F)-.45 F 1.372(ast P)-.75 F +(ac)-.8 E -.1(ke)-.2 G(t).1 E(Interposing)97 422.4 Q F0 +(\(May 1996\). http://www)2.5 E(.cs.berk)-.65 E(ele)-.1 E -.65(y.)-.15 G +(edu/~eanders/magicrouter/.).65 E 10(11. Cisco)72 438 R(System,)2.951 E +F2 .452(Cisco Local Dir)2.951 F(ector)-.37 E F0 .452 +(\(1998\). http://www)2.952 F(.cisco.com/w)-.65 E +(arp/public/751/lodir/inde)-.1 E(x.html.)-.15 E 10(12. D.)72 453.6 R +.658(Dias, W)3.158 F 3.158(.K)-.92 G .658(ish, R. Mukherjee, and R. T) +-3.158 F -2.1 -.25(ew a)-.7 H .658(ri, \231).25 F 3.158(AS)-.8 G .658 +(calable and Highly A)-3.158 F -.25(va)-.74 G .658(ilable Serv).25 F(er) +-.15 E -.7<2c9a>-.4 G F2(COMP-)3.858 E(CON 1996,)97 465.6 Q F0 +(pp. 85-92 \(1996\).)2.5 E 10(13. Om)72 481.2 R 2.272 -1.11(P. D)2.552 H +.052(amani, P)1.11 F 2.552(.E)-1.11 G .052(merald Chung, and Y)-2.552 F +.052(ennun Huang,)-1 F F2 .052(ONE-IP: T)2.552 F(ec)-.92 E .052 +(hniques for Hosting a Service on)-.15 F 2.5(aC)97 493.2 S +(luster of Mac)-2.5 E(hines)-.15 E F0(\(August 1997\). http://www)2.5 E +(.cs.ute)-.65 E(xas.edu/users/damani/.)-.15 E 10(14. W)72 508.8 R 5.863 +(ensong Zhang,)-.8 F F2 5.863(Linux V)8.363 F 5.863(irtual Server Pr) +-.74 F(oject)-.45 E F0 5.862(\(May 1998\). http://proxy)8.362 F +(.iinchina.net/~wen-)-.65 E(song/ippfvs/.)97 520.8 Q 10(15. Jim)72 536.4 +R -.35(Tr)2.5 G(ocki,).35 E F2(mon: Service Monitoring Daemon)2.5 E F0 +(\(July 1998\). http://consult.ml.or)2.5 E(g/~trockij/mon/.)-.18 E 10 +(16. Simon)72 552 R .776(Horman, \231Creating Redundant Linux Serv)3.276 +F(ers,)-.15 E<9a>-.7 E F2 .777(The 4th Annual LinuxExpo Confer)3.276 F +(ence)-.37 E F0(\(May)3.277 E(1998\). http://linux.zipw)97 564 Q +(orld.com.au/f)-.1 E(ak)-.1 E(e/.)-.1 E 10(17. Jim)72 579.6 R 2.684 +(Gray and T)5.184 F 5.184(.R)-.74 G(euter)-5.184 E(,)-.4 E F2 -1.55 -.55 +(Tr a)5.184 H 2.684(nsaction Pr).55 F 2.683(ocessing Concepts and T)-.45 +F(ec)-.92 E(hniques,)-.15 E F0(Mor)5.183 E -.05(ga)-.18 G 5.183(nK).05 G +(aufmann)-5.183 E(\(1994\).)97 591.6 Q EP +%%Trailer +end +%%EOF diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Scaling Internet Services by LinuxDirector.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Scaling Internet Services by LinuxDirector.pdf new file mode 100644 index 0000000..7dfae97 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Scaling Internet Services by LinuxDirector.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/VRRP_WhitePaper.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/VRRP_WhitePaper.pdf new file mode 100644 index 0000000..0731eb5 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/VRRP_WhitePaper.pdf differ diff --git "a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Vergleich der Clustersysteme von MySQL und EAC \302\253 03 \302\253 2005 \302\253 ...pdf" "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Vergleich der Clustersysteme von MySQL und EAC \302\253 03 \302\253 2005 \302\253 ...pdf" new file mode 100644 index 0000000..e891a93 Binary files /dev/null and "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Vergleich der Clustersysteme von MySQL und EAC \302\253 03 \302\253 2005 \302\253 ...pdf" differ diff --git "a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Vergleich der Clustersysteme von MySQL und EAC \303\202\302\253 03 \303\202\302\253 2005 \303\202\302\253 ...pdf" "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Vergleich der Clustersysteme von MySQL und EAC \303\202\302\253 03 \303\202\302\253 2005 \303\202\302\253 ...pdf" new file mode 100644 index 0000000..e891a93 Binary files /dev/null and "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/Vergleich der Clustersysteme von MySQL und EAC \303\202\302\253 03 \303\202\302\253 2005 \303\202\302\253 ...pdf" differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_BioCluster_Protocol_Description_.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_BioCluster_Protocol_Description_.pdf new file mode 100644 index 0000000..1b1155d Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_BioCluster_Protocol_Description_.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_BioCluster_User_Guide_.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_BioCluster_User_Guide_.pdf new file mode 100644 index 0000000..56afb52 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_BioCluster_User_Guide_.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_LinuxPlanet_-_Print_-_Getting_Free_Long_Distance__Part_2_.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_LinuxPlanet_-_Print_-_Getting_Free_Long_Distance__Part_2_.pdf new file mode 100644 index 0000000..e95a26f Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_LinuxPlanet_-_Print_-_Getting_Free_Long_Distance__Part_2_.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_TheGoldFish_net_Blog__273_Blog_Archive__273_DUNDi_Tutorial_for_Asterisk_Home_.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_TheGoldFish_net_Blog__273_Blog_Archive__273_DUNDi_Tutorial_for_Asterisk_Home_.pdf new file mode 100644 index 0000000..cc6eb5f Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/_TheGoldFish_net_Blog__273_Blog_Archive__273_DUNDi_Tutorial_for_Asterisk_Home_.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/asterisk_pbx_sc_pap.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/asterisk_pbx_sc_pap.pdf new file mode 100644 index 0000000..c8b04b3 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/asterisk_pbx_sc_pap.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/bescheinigung_eisenhauer.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/bescheinigung_eisenhauer.pdf new file mode 100644 index 0000000..40b7f64 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/bescheinigung_eisenhauer.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/bib_umfrage.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/bib_umfrage.pdf new file mode 100644 index 0000000..b16fa54 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/bib_umfrage.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/carp_linux.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/carp_linux.pdf new file mode 100644 index 0000000..1851d79 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/carp_linux.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/cisco_high_availability.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/cisco_high_availability.pdf new file mode 100644 index 0000000..1e46599 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/cisco_high_availability.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/cluster_technologies.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/cluster_technologies.pdf new file mode 100644 index 0000000..c8d7cd8 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/cluster_technologies.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/clustering_failover.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/clustering_failover.pdf new file mode 100644 index 0000000..7f38aa3 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/clustering_failover.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/external_locking.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/external_locking.pdf new file mode 100644 index 0000000..73589f0 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/external_locking.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/hachap2.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/hachap2.pdf new file mode 100644 index 0000000..60efcbf Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/hachap2.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/heartbeat_sc_pap.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/heartbeat_sc_pap.pdf new file mode 100644 index 0000000..59b677c Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/heartbeat_sc_pap.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/iax_sip_comp.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/iax_sip_comp.pdf new file mode 100644 index 0000000..0daa403 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/iax_sip_comp.pdf differ diff --git "a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/lf179, SystemAdministration_ Hochvef\303\203\302\274gbarkeitssysteme mit Linux.pdf" "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/lf179, SystemAdministration_ Hochvef\303\203\302\274gbarkeitssysteme mit Linux.pdf" new file mode 100644 index 0000000..8a657eb Binary files /dev/null and "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/lf179, SystemAdministration_ Hochvef\303\203\302\274gbarkeitssysteme mit Linux.pdf" differ diff --git "a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/lf179, SystemAdministration_ Hochvef\303\274gbarkeitssysteme mit Linux.pdf" "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/lf179, SystemAdministration_ Hochvef\303\274gbarkeitssysteme mit Linux.pdf" new file mode 100644 index 0000000..8a657eb Binary files /dev/null and "b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/lf179, SystemAdministration_ Hochvef\303\274gbarkeitssysteme mit Linux.pdf" differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/linuxsutra_ Howto MySQL DRBD HA.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/linuxsutra_ Howto MySQL DRBD HA.pdf new file mode 100644 index 0000000..6ddbbe4 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/linuxsutra_ Howto MySQL DRBD HA.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/literatur.txt b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/literatur.txt new file mode 100644 index 0000000..dec3438 --- /dev/null +++ b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/literatur.txt @@ -0,0 +1,2 @@ +Maurice J. Bach, The design of the UNIX operating system, Prentice-Hall, Inc., Upper Saddle River, NJ, 1986 + diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0601.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0601.pdf new file mode 100644 index 0000000..8c7ec7a Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0601.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0702.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0702.pdf new file mode 100644 index 0000000..5dec09f Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/news0702.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/p78-fox.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/p78-fox.pdf new file mode 100644 index 0000000..6aea23a Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/p78-fox.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/redhat_gfs.pdf b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/redhat_gfs.pdf new file mode 100644 index 0000000..1b172a8 Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/redhat_gfs.pdf differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner00.ps.gz b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner00.ps.gz new file mode 100644 index 0000000..e5ad47a Binary files /dev/null and b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner00.ps.gz differ diff --git a/Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner01.ps b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner01.ps new file mode 100644 index 0000000..369c664 --- /dev/null +++ b/Bachelor/BSc-Arbeit/mat_bsc_arbeit/reisner01.ps @@ -0,0 +1,30395 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software +%%Title: dipl.dvi +%%Pages: 89 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%DocumentFonts: Times-Roman +%%DocumentPaperSizes: a4 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -t a4 -o /home/philipp/diplomarbeit/dipl.ps +%+ dipl.dvi +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2000.05.18:1154 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: 8r.enc +% @@psencodingfile@{ +% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", +% version = "0.6", +% date = "1 July 1998", +% filename = "8r.enc", +% email = "tex-fonts@@tug.org", +% docstring = "Encoding for TrueType or Type 1 fonts +% to be used with TeX." +% @} +% +% Idea is to have all the characters normally included in Type 1 fonts +% available for typesetting. This is effectively the characters in Adobe +% Standard Encoding + ISO Latin 1 + extra characters from Lucida. +% +% Character code assignments were made as follows: +% +% (1) the Windows ANSI characters are almost all in their Windows ANSI +% positions, because some Windows users cannot easily reencode the +% fonts, and it makes no difference on other systems. The only Windows +% ANSI characters not available are those that make no sense for +% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen +% (173). quotesingle and grave are moved just because it's such an +% irritation not having them in TeX positions. +% +% (2) Remaining characters are assigned arbitrarily to the lower part +% of the range, avoiding 0, 10 and 13 in case we meet dumb software. +% +% (3) Y&Y Lucida Bright includes some extra text characters; in the +% hopes that other PostScript fonts, perhaps created for public +% consumption, will include them, they are included starting at 0x12. +% +% (4) Remaining positions left undefined are for use in (hopefully) +% upward-compatible revisions, if someday more characters are generally +% available. +% +% (5) hyphen appears twice for compatibility with both +% ASCII and Windows. +% +/TeXBase1Encoding [ +% 0x00 (encoded characters from Adobe Standard not in Windows 3.1) + /.notdef /dotaccent /fi /fl + /fraction /hungarumlaut /Lslash /lslash + /ogonek /ring /.notdef + /breve /minus /.notdef +% These are the only two remaining unencoded characters, so may as +% well include them. + /Zcaron /zcaron +% 0x10 + /caron /dotlessi +% (unusual TeX characters available in, e.g., Lucida Bright) + /dotlessj /ff /ffi /ffl + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + % very contentious; it's so painful not having quoteleft and quoteright + % at 96 and 145 that we move the things normally found there to here. + /grave /quotesingle +% 0x20 (ASCII begins) + /space /exclam /quotedbl /numbersign + /dollar /percent /ampersand /quoteright + /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +% 0x30 + /zero /one /two /three /four /five /six /seven + /eight /nine /colon /semicolon /less /equal /greater /question +% 0x40 + /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O +% 0x50 + /P /Q /R /S /T /U /V /W + /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +% 0x60 + /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o +% 0x70 + /p /q /r /s /t /u /v /w + /x /y /z /braceleft /bar /braceright /asciitilde + /.notdef % rubout; ASCII ends +% 0x80 + /.notdef /.notdef /quotesinglbase /florin + /quotedblbase /ellipsis /dagger /daggerdbl + /circumflex /perthousand /Scaron /guilsinglleft + /OE /.notdef /.notdef /.notdef +% 0x90 + /.notdef /.notdef /.notdef /quotedblleft + /quotedblright /bullet /endash /emdash + /tilde /trademark /scaron /guilsinglright + /oe /.notdef /.notdef /Ydieresis +% 0xA0 + /.notdef % nobreakspace + /exclamdown /cent /sterling + /currency /yen /brokenbar /section + /dieresis /copyright /ordfeminine /guillemotleft + /logicalnot + /hyphen % Y&Y (also at 45); Windows' softhyphen + /registered + /macron +% 0xD0 + /degree /plusminus /twosuperior /threesuperior + /acute /mu /paragraph /periodcentered + /cedilla /onesuperior /ordmasculine /guillemotright + /onequarter /onehalf /threequarters /questiondown +% 0xC0 + /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla + /Egrave /Eacute /Ecircumflex /Edieresis + /Igrave /Iacute /Icircumflex /Idieresis +% 0xD0 + /Eth /Ntilde /Ograve /Oacute + /Ocircumflex /Otilde /Odieresis /multiply + /Oslash /Ugrave /Uacute /Ucircumflex + /Udieresis /Yacute /Thorn /germandbls +% 0xE0 + /agrave /aacute /acircumflex /atilde + /adieresis /aring /ae /ccedilla + /egrave /eacute /ecircumflex /edieresis + /igrave /iacute /icircumflex /idieresis +% 0xF0 + /eth /ntilde /ograve /oacute + /ocircumflex /otilde /odieresis /divide + /oslash /ugrave /uacute /ucircumflex + /udieresis /yacute /thorn /ydieresis +] def + +%%EndProcSet +%%BeginProcSet: special.pro +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ +psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 +roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath +moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict +begin/SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ +CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto +closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx +sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR +}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse +CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury +lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N +/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} +repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N +/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX +currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY +moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X +/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 +1 startangle endangle arc savematrix setmatrix}N end + +%%EndProcSet +TeXDict begin 39158280 55380996 1000 600 600 (dipl.dvi) +@start +%DVIPSBitmapFont: Fa ecti1095 10.95 54 +/Fa 54 253 df<933807FF80043F13F09338FE00FCDB01F0131EDB07E0130F4B48131F4C +133F031F147F4BC7FCA2187E037E14381800A215FE5DA414015DA414030103B712F0A218 +E0903A0003F000070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177EA214 +3F92C712FE5FA34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A0101 +13F018E0933800F1C0EF7F800103ED1F004A91C7FCA35C1307A25C121CEA7E0F00FE5BA2 +49CAFC12FCEAF81E485AEA7878EA3FF0EA07C0385383BF33>28 D44 D<387FFFFCA3B5FCA21605799520>I<120EEA3F80127F12 +FFA31300127E123C090976881C>I<15FE913807FF8091381F07C091387C01F0ECF00049 +4813F8494813780107147C495A49C7FC167E133E137EA25BA2485AA2000315FEA25B0007 +15FCA2491301120FA34848EB03F8A44848EB07F0A448C7EA0FE0A316C0007E141F12FE16 +80153FA2481500A2157EA25DA25D4813015D6C495A127C4A5A4A5A6C49C7FC143E6C5B38 +0FC1F03803FFC0C648C8FC273F76BC2E>48 D<15FE913803FFC091380F01F091383C00F8 +4A137C4A7F4948133F49487F4A148049C7FC5BEB0E0C011E15C0EB1C0EEB3C0613381378 +1370020E133FD9F00C148013E0141C0218137F00011600EBC0384A13FEEC600102E05B3A +00E3C003F89039FF0007F0013C495A90C7485A5E037FC7FC15FC4A5A4A5AEC0FC04AC8FC +147E14F8EB03E0495A011FC9FC133E49141801F0143C48481438485A1678485A48C85A12 +0E001E4A5AD83FE0130301FF495A397C3FF01FD8780FB55AD8700391C7FCD8F0015B486C +6C5A6E5AEC07C02A3F79BC2E>50 D<1638167E16FE16FCA3150116F8A3150316F0A21507 +16E0A2ED0FC0A3ED1F80A216005DA2157EA2157C15FC5D14015D14035D4A5AA24A5AA24A +C7FC143EED038091387C0FC014F8ECF01F01011480EB03E014C0903807803F010F1400EB +1F00133E495B49137E485A485A484813FE48B46C5A4813F04813FE267C00FF130800F090 +380FFFFC00601301C714E0913803F8005DA314075DA3140F5DA3141F5DA3020EC7FC274F +7DBC2E>52 D +54 D<131E137FEBFF80A31400A25B133890C7FCB3A3120EEA3F80127F12FFA390C7FC12 +7E123C112776A61C>58 D<17381778A217FCA21601A216031607A2160FA2161DA2163916 +79167116E1A2923801C1FEA2ED0380A2ED07005D150E5DA25DA25D15F05D14015D4A487F +A24AC77EA2140E141E021FB6FC5CA20270C77EA25CA2495A13035C49C8FC1880010E153F +A25B133C1338137813F80001167FD807FCEDFFC0B500C0013F13FFA25C38417BC043>65 +D<9339FF8001C0030F13E0033F9038F803809239FF807C07913A03FC001E0FDA0FF0EB0F +1FDA3FC09038079F004AC76CB4FC02FE80495A49486E5A495A495A4948157E4948157C13 +7F49C9FC5B00011778485A5B12071870485AA2485A95C7FC123F5BA2127F5BA312FF90CC +FCA55A170FA2170EA2171E171C173C17381778007F167017F04C5A6C5E6D1403001F4B5A +6D4AC8FC6C6C141E00075D6D14F8D803FCEB01E0C66CEB07C090267FC03FC9FC90381FFF +FE010713F0010013803A4272BF41>67 D<49B77E18F018FC903B0003FC0003FE9438007F +804B143FF00FC019E00207ED07F04B140319F81801140F4B15FC1800A2141F4B15FEA314 +3F5DA21801147F92C8FCA219FC5C4A1503A3010117F84A1507A219F00103160F5C19E018 +1F010717C05CF03F80A2010FEE7F004A157E18FE4D5A011F5E4A4A5A17074D5A013F4B5A +4A4A5A4DC7FC017FEC01FC4C5A91C7EA0FE049EC7FC0007F90B6C8FCB712FC16C03F3E7B +BD44>I<49B812F8A390260003FCC7123F18074B14031801F000F014075DA3140F5D19E0 +A2141F4B1338A2EF7801023F027013C04B91C7FCA217F0027F5CED00011603160F91B65A +A39138FE001F0101EC07805CA3010392C8FC5C18074C5B0107020E130E5C93C7121E181C +010F163C4A15381878A2011F5E5C4D5AA2013F15034A4A5A170F017F151F4D5A91C812FF +49020F90C7FC007F90B7FCB9FC5F3D3E7BBD3D>I<49B812F0A390260003FCC7123F180F +4B14071803F001E014075DA3140F5D19C0A2141F5D1770EFF003023F02E013804B91C7FC +A21601027F5CED0003A216074AEB1F8092B5FCA3902701FE003FC8FC4A7F82A20103140E +5CA2161E0107141C5CA293C9FC130F5CA3131F5CA3133F5CA2137FA291CBFC497E007FEB +FF80B6FCA23C3E7BBD3B>I<49B5D8FC01B512FCA390260003FEC73803FE004B5D4B5DA2 +180714074B5DA2180F140F4B5DA2181F141F4B5DA2183F143F4B5DA2187F147F92C890C7 +FCA26091B8FC60A24AC7120113014A5DA2170313034A5DA2170713074A5DA2170F130F4A +5DA2171F131F4A5DA2173F133F4A5DA2017F157FA291C890C8FC496C4A7EB690B6FCA24A +5D463E7BBD43>72 D<49B512FEA216FC90390003FE005D5DA314075DA3140F5DA3141F5D +A3143F5DA3147F92C7FCA35C5CA313015CA313035CA313075CA3130F5CA3131F5CA3133F +5CA2137FA291C8FC497EB6FCA3273E7BBD23>I<4AB512FCA391C71300A25EA215015EA3 +15035EA315075EA3150F5EA3151F5EA3153F5EA3157F93C7FCA35DA25DA21401A25DA214 +03A25DA21407121FD87F805BA2140FD8FF005B141F485C00F8495A12E0007049C8FC14FE +387801FC383C03F06C485A3807FF80D801FCC9FC2E4078BD2F>I<49B500FC903807FFFE +A390260003FEC813C04B16004B15FC4E5A19E002074B5A4BEC0F80061EC7FC60020F5D4B +5CEF03E0EF0780021F4AC8FC4B131E5F17F8023F495A92388003C04C5A4CC9FC027F131E +ED007F5E5D4A487F4A5AED1F3F033C7F010113789138FCF01FDAFDE07F9138FFC00F4901 +807FECFE004A13074A8013074A130383A2010F6E7E5C160083131F4A8084A2013F153F4A +81A2017F6F7EA291C87F496C4A7E007F01FE0107B57EB5FCA2473E7BBD45>I<49B6FCA3 +90260003FEC8FC5D5DA314075DA3140F5DA3141F5DA3143F5DA3147F92C9FCA35C5CA313 +015CA313035C18C0EF01E0010716C05C17031880130F4A140718005F131F4A141EA2173E +013F5D4A14FC1601017F4A5A160791C7121F49ECFFF0B8FCA25F333E7BBD39>I<902601 +FFFE93381FFFC062A2D9000394387FE000505A6303BFED01DF1AFF0207EE03BF033FDB07 +3FC7FCA2F10E7F140F020EEE1C7E19381AFE021E167091261C1F805D19E019E1023CED01 +C1023892380381F8A2F0070314780270030E5B181C19079126F00FC0133802E05F1870F0 +E00F130102C0DA01C05BA2943803801F13030280DA07005B170EDB07E0143F01075D0200 +94C8FC5F4D5B5B010E4B137EA2DCE1C013FE011EECE380011C5F04E7C7FCDB03F7130101 +3C14FE01385F5E01784A130313F8486C4A5CD807FE4C7EB500F0D9E007B512F016C0DAE0 +015E523E7ABD51>I79 D<49B77E18F018FC903B0003FC0003 +FEEF00FF4BEC3F80F01FC01407F00FE05DA2020F16F0A25DA2141FF01FE05DA2023F16C0 +183F4B1580187F027F160018FE92C7485A604AEC07F04D5A4AEC3F804CB4C7FC49B612F8 +17E002FCCAFCA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA291 +CBFC497E007F13FEB5FCA23C3E7BBD3D>I<49B612FCEFFF8018F0903B0003FC000FF8EF +01FE4B6D7E84F03F800207ED1FC05DA219E0140F5DA3021FED3FC05DA2F07F80143F4B15 +0018FE4D5A027F5D92C7485AEF0FE0EF1F804A027EC7FC4AEB07F891B612E01780903A01 +FE000FE04AEB03F0707E707E0103814A147E177FA213075CA25F130F5C5F1601131F5CA3 +013F020314404A16E05F017F160119C091C700011303496C1680B61507933900FE0F004A +EC7E1ECAEA1FFCEF07F03B407BBD42>82 D<92390FF001C0ED7FFE4AB5EA0380913907F0 +0FC791390FC003EF91381F0001023E903800FF004A805C495A4948143EA2495AA2010F15 +3C5CA3011F1538A46E91C7FCA2806D7E14FCECFFC06D13F86D13FF16E0010014F86E7F02 +1F7F02037FEC003F03077F1500167F707E161FA2160FA212075A5F120EA2001E151F94C7 +FCA25E003E153E5E123F5E486C495A4B5A6D1307D87DE0EB0F80D8F8F849C8FCD8F07F13 +FE90383FFFF8D8E00F13E048C690C9FC32427ABF33>I<48B9FCA3489039001FE00101F8 +ED007FD807E04A133F49161F49161E000F143F90C75BA2121E157F001C92C7FC003C171C +12385D00785C1270183C00F001011538C7491400A314035DA314075DA3140F5DA3141F5D +A3143F5DA3147F92C9FCA35C5CA313015CA21303A25CEB0FFC003FB6FCA3383E71BD41> +I86 +D<267FFFF890B500F890B512C0B5FC60000390C7D807FEC7380FF80001FCDA03F86E5A74 +5A6300014F5A98C7FC16071A0E040F151E1A1C041F153C1A38043B5DA204735D16F304E3 +4A5A150104C34A5AED03834FC8FCED0703190E150E715B031C153C040114380338157819 +7003705D15F003E04A5A140103C04A5AEC038001FE4CC9FC0000EB0700180E140E604A15 +3C18384A157818704A5DA24AECFDC013FF4AECFF80A24A92CAFC91C7FC5F5B5F5B5F5B70 +5A5B5F52406EBD5A>I<91B500FC90383FFFF8A25E020301C0010713006E90C713F86EED +03E04E5A616F6C49C7FC181E033F5C70133860031F5CEEE0014D5A030F495A7048C8FC17 +0E03075B705A03031378705AEEFDE06FB45A5F94C9FC6F5A82A2824C7E5D83ED03BFED07 +1F030F7F151EED3C0F03787F1570EDE007DA01C07F02031303DA07807FEC0F00021E1301 +021C805C4A13004A80130149488049488149C8FC496F7E5B01FF157F00076D4A7EB500E0 +010FEBFFC0A261453E7CBD43>II<147E49B47E903907C1C38090391F80EFC090383F00FF017E137F +4914804848133F485AA248481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401 +485C5AA21403EDF0385AA21407EDE078020F1370127C021F13F0007E013F13E0003E137F +ECF3E1261F01E313C03A0F8781E3803A03FF00FF00D800FC133E252977A72E>97 +D +III<143F903801FFE09038 +07C0F090381F0078137E49133C485A485A12074848137C491378121F484813F8EC01F000 +7FEB07E09038001FC0903801FF00EBFFF8B5128048C8FCA45AA6150C151C153C007C1478 +15F0007EEB01E0003EEB03C06CEB0F806CEB1E00380780FC3803FFE0C690C7FC1E2976A7 +29>I<167C4BB4FC923807C78092380F83C0151F160FED3F1FA2157E1780EE0F0093C7FC +5DA414015DA414035DA30103B512F8A390260007E0C7FCA3140F5DA5141F5DA4143F92C8 +FCA45C147EA414FE5CA413015CA4495AA4495AA4495AA2121C007E5B12FE49C9FCA2EAFC +1E485A12F0EA7878EA3FE0EA0F802A5383BF1C>III<1470EB01FCA314F8A2EB00E01400AD137C48B4FC38038F80EA +0707000E13C0121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE +5BA212015BA212035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C013831480 +38078700EA03FEEA00F8163D79BB1C>IIIIIII<903903E001F890390FF807FE903A1E7C1E0F80903A1C3E3C07C0013C13 +7801389038E003E0EB783F017001C013F0ED80019038F07F0001E015F8147E1603000113 +FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A1480163F010F1500 +5E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC03E049C9FCA2137E +A213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I114 DII<137C48B4143826038F8013FCEA0707000E7F001E1401121CD8 +3C0F5C12381503EA781F007001805BA2D8F03F1307140000005D5B017E130FA201FE5C5B +151F1201495CA2153F0003ED8380491403A2157F1607037E1300A2EDFE0F160E00011301 +9039F803BE1C0000EB073E90397C1E1E3890393FF80FF0903907E003E0292979A730>I< +017CEB038048B4EB07E039038F800FEA0707000E01C013F0121E001C1407EA3C0F003814 +0316E0D8781F130100701380A2EAF03F020013C012005B017E1303168013FE5B15070001 +15005BA2150E12035B5DA25DA25DA200015C4A5AEBF8030000495AD97E0FC7FCEB1FFCEB +07F0242979A729>I<017C167048B491387001FC3A038F8001F8EA0707000E01C015FE00 +1E1403001CEDF000EA3C0F0038177C1507D8781F4A133C00701380A2D8F03F130F020049 +133812005B017E011F14784C137013FE5B033F14F0000192C712E05BA2170100034A14C0 +49137E17031880A2EF070015FE170E00010101141E01F86D131C0000D9039F5BD9FC076D +5A903A3E0F07C1E0903A1FFC03FFC0902703F0007FC7FC372979A73C>I<903903E003F0 +90390FF80FFC90393C3C1C1F9039701E380F9039E01F703F000102F013803B03C00FE07F +001380000714C0D9001F131C4892C7FC000E5CA2001E133FA2C790C8FCA25C147EA314FE +5CA313014A1338A3010314781670001C4913F0007E5D0107130100FE5D010F495A90380E +F80727781C780FC7FC9038383C3C393FF01FF83907C007E029297CA729>I<137C48B414 +3826038F8013FCEA0707000E7F001E1401001C15F8EA3C0F12381503D8781F14F0007013 +80A2D8F03F1307020013E012005B017E130F16C013FE5B151F1201491480A2153F000315 +005BA25D157EA315FE5D00011301EBF8030000130790387C1FF8EB3FF9EB07E1EB00035D +A214075D121F486C485AA24A5AD87F0090C7FC007E133E0038137E5CEB01F06C485A381E +0FC0D807FFC8FCEA01F8263B79A72C>I<913807800F91391FC01F80023FEB3FC0167F14 +7FA21780DA3F80130091381E001C91C9FCAA137C48B4143826038F8013FCEA0707000E7F +001E1401121CD83C0F5C12381503EA781F007001805BA2D8F03F1307140000005D5B017E +130FA201FE5C5B151F1201495CA2153F0003ED8380491403A2157F1607037E1300A2EDFE +0F160E14010001903803BE1C9038F8073E3A00FC1E1E3890393FF80FF090390FE003E02A +3C79BA30>252 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fb cmr8 8 6 +/Fb 6 58 df48 D<130C133C137CEA03FC12FFEAFC7C1200B3 +B113FE387FFFFEA2172C7AAB23>III<140EA2 +141E143EA2147E14FEA2EB01BE1303143E1306130E130C131813381330136013E013C0EA +0180120313001206120E120C5A123812305A12E0B612FCA2C7EA3E00A9147F90381FFFFC +A21E2D7EAC23>I57 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fc ectt1095 10.95 56 +/Fc 56 126 df<143C147EEB01FE1303EB07FCEB0FF8EB1FE0EB3FC0EB7F80EBFF005B48 +5A485AA2485A5B120F5B121F5BA2123F90C7FCA25A127EA312FE5AAD7E127EA3127F7EA2 +7F121FA27F120F7F12077F6C7EA26C7E6C7E7FEB7F80EB3FC0EB1FE0EB0FF8EB07FCEB03 +FE1301EB007E143C174771BE2F>40 D<127812FCB4FC7F6C7E6C7EEA0FF06C7E6C7E6C7E +1200137FEB3F80A2EB1FC0130F14E0130714F01303A214F81301A214FC1300A314FE147E +AD14FE14FCA3130114F8A2130314F0A2130714E0130F14C0131FEB3F80A2EB7F0013FE12 +01485A485A485AEA3FE0485A485A90C7FC12FC1278174778BE2F>II44 +D<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B6E8A2F>46 +D<16E0ED01F01503A2150716E0150F16C0151F1680153F16005D157E15FE5DA214015D14 +035D14075D140F5D141F5D143F92C7FCA25C147E14FE5C13015C13035C13075C130F5CA2 +131F5C133F91C8FC5B137E13FE5B12015B12035BA212075B120F5B121F5B123F90C9FC5A +127E12FE5AA25A127824477BBE2F>I49 +DII< +EC07F84A7EA2141F143F157C147F147E14FEEB01FC14F8130314F01307EB0FE014C0131F +1480133FEB7F00137E13FE5B485A12035B12075B485A121F5B123F90C7FC127E12FEB712 +FE16FFA46C15FEC8EA7C00AA91387FFFFC91B512FEA46E13FC28397DB82F>I54 +D<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCB1121FEA3F80EA7FC0EAFFE0 +A5EA7FC0EA3F80EA1F000B276EA62F>58 DI<003FB612FC +4815FEB8FCA36C15FECAFCA9007FB612FEB8FCA36C15FE6C15FC28157DA52F>61 +D<143F4A7EA24A7EA4903801F3E0A501037FA314E101077FA414C0010F7FA490381F807E +A4013F137F4A7EA4017E6D7EA2017FB5FCA290B67EA49038FC000F48486D7EA400038149 +1303A3D87FFF90383FFF80A2B56C4813C0A26C496C1380A22A397EB82F>65 +D<007FB512E0B612FC15FF168016C06C15E03A03F0001FF0150FED03F8A2150116FC1500 +A5150116F8150316F01507ED1FE0ED7FC090B61280160015FC15FF16C016E09039F0000F +F0ED03F8ED01FC150016FE167EA2163FA6167F167E16FEA2ED01FC1507ED1FF8007FB6FC +B712F016E0168016006C14F828387EB72F>I<91387F8038903903FFE07C010FEBF8FC49 +13FC4913FF5BEBFFC048EB003F4848130FEA07F849130748481303A2484813015B123F90 +C8FCA25A127E1678160012FE5AAC7E127EA21678007F15FC7EA27F121F6D13016C6C14F8 +6D130312076DEB07F0D803FE130F6C6CEB1FE06C9038C07FC06DB512806D14006D5B6D5B +010313F09038007F80263A7CB82F>I<007FB57EB612F015FC81816C812607E0017F9138 +003FE0151F6F7E6F7E15036F7EA26F7EA2167E167F82A41780161FAB163F1700A35E167E +A216FE4B5AA24B5A15074B5A151F4B5A4AB45A007FB65AB7C7FC5D5D15F06C148029387E +B72F>I<007FB612FCB77EA47ED803F0C7127EA7163C93C7FCA515F04A7EA490B5FCA6EB +F001A46E5A92C8FCA5160FEE1F80A9007FB7FCB8FCA46C160029387DB72F>I<007FB612 +FEB8FCA47ED803F0C7123FA7161E1600A6157815FCA490B5FCA6EBF000A4157892C7FCAE +387FFFE0B57EA46C5B28387DB72F>I<007FB512FEB7FCA46C14FE390007E000B3B3A800 +7FB512FEB7FCA46C14FE203879B72F>73 D<387FFFF080B5FCA27E5CD801F8C8FCB3B016 +1E163FA9007FB7FCA2B8FCA27E16FE28387DB72F>76 D<007FB512E0B612F815FEEDFF80 +16C06C15E03A03F0007FF0151FED07F81503ED01FCA2150016FE167EA616FE16FC1501A2 +ED03F81507ED1FF0157F90B612E016C01680EDFE0015F815E001F0C8FCB0387FFF80B57E +A46C5B27387DB72F>80 D<387FFFFEECFFC0B612F015FC6C80812603F0037F9138007FC0 +153F6F7E150F1507821503A515075E150F151F4B5A157F913803FF8090B6C7FC5D5D5D81 +819038F003FF9138007F80153F151F82150FA9EEC1E0EEC3F0A316E33A7FFF8007E7EEFF +E0B512C06F13C06C497E6F1380C9EA3E002C397EB72F>82 D<90391FF8038090397FFF07 +C048B512C74814EF4814FF5A381FF80F383FC00349C6FC48C7127F007E143F12FE48141F +A2150FA46CEC0780007E91C7FC127F6C7E7FEA1FF86CB47E6C13F86CEBFF806C14E06C6C +13F8010F7F01007FEC0FFF02001380ED3FC0151FED0FE01507A216F00078140312FCA56C +140716E06C140F7F6DEB1FC001F0137F9039FE01FF8090B612005D00FD5CD8F87F5B011F +13E0D8700390C7FC243A7BB82F>I<007FB71280B812C0A53AFC003F000FA70078ED0780 +C791C7FCB3B290381FFFFE497FA46D5B2A387EB72F>I87 +D<387FFFFEB6FCA414FE00FCC7FCB3B3B3A5B512FE14FFA46C13FE18476DBE2F>91 +D<387FFFFEB6FCA47EC7123FB3B3B3A5007FB5FCB6FCA46C13FE18477DBE2F>93 +D<007FB612E0A2B712F0A36C15E0A224077B7D2F>95 D97 +DI<903803FFC0010F13F8013F7F90B57E488048158048EB007FEA0FF85B485A +49EB3F004848131E90C9FC5A127EA212FE5AA87E127EA2127FED07806C6CEB0FC07F6C6C +131F6D1480D80FFC137F3A07FF81FF006C90B5FC6C5C6C5C013F13F0010F13C0D903FEC7 +FC222A79A82F>I<913803FF804A7FA480EC000FAAEB03FCEB1FFF017F13CF90B512EF48 +14FF5A3807FE07380FF801391FF0007F01C0133F485A151F48C7FC150F127E12FEA25AA8 +7E007E141FA2127F6C6C133F157F6C7E6D13FF380FF8012607FE0713FF90B712806C14EF +6C14CF6C6C138F90261FFE071300D907F8C8FC29397DB72F>II<4AB4FC020713C0021F13E0147F91B512F0A249130FEB +03FC9138F807E0903907F001804AC7FCA8007FB61280B712C0A46C1580260007E0C7FCB3 +A9003FB512FC4880A46C5C24397DB82F>I<903903F801FE903A1FFF07FF80017F13DF90 +B712C05A5AD9FE0FEB0F803B07F803FC070048486C6CC7FCEBE00049137E001F147F497F +A66D5B000F147E6D13FEEBF0016C6C485A3903FE0FF890B5FC485C5D485C019F90C8FCEB +83F80180C9FCA37FEA07E490B512F06C14FF4815C0488148813A3FC0001FF890C7EA01FC +007E6E7E007C157E00FC153E48153F82A46C5D007C153E007F15FE6C6C495A01E01307D8 +1FFEEB7FF86CB65A6C5D000115806C92C7FC011F13F8010313C02A3E7DA72F>III107 D<387FFFF080B5FCA27EA2EA0001B3B3A8007FB6 +12E0A2B712F0A26C15E0A224387BB72F>I<903901F801F83A7F8FFC0FFC3AFFDFFE1FFE +90B5487E92B51280A23A7FFE1FFE1F3B07FC0FFC0FC001F813F89039F007F00701E013E0 +A301C013C0B3A33B7FFC3FFC3FFCD8FFFE01FE13FE027F137FA2023F133FD87FFC01FC13 +FC2F2880A72F>IIII114 +D<90381FFC0E48B5129F000714FF5A5A5A387FF007EB800000FEC77EA24880A37E007F14 +1E01C090C7FCEA3FFC381FFFF06CEBFF80000314E0C614F8011F13FE9038007FFF020113 +80EC007F0078EC1FC000FC140FED07E0A27EA27E6D130F6DEB1FC06D133F9039FC01FF80 +90B6FC16005D00F814F8013F13E0D8700790C7FC232A7AA82F>I<130F497EAA007FB612 +C0B712E0A46C15C026001F80C7FCB216F0ED01F8A5ECC003ED07F090380FE00F9138F81F +E06DB512C0A26D14806DEBFE009038007FF8EC1FE025337EB12F>I<3A7FF001FFC0486C +487FA4007F7F0001EB0007B3A4150FA2151F153F6D137F6CB448B5128091B612C07FA26D +13E7010F01831380D903FEC8FC2A287EA62F>II< +3B7FFF801FFFE06E5AB515F0A26C16E04A7ED807C0C7EA3E00A36D147E0003157CA56C6C +5CEC0F80EC1FC0EC3FE0A36C6C486C5AEC7DF1A214FD15F914F9D978F85B1379137DA2EC +F079157B013FEB7FC014E0153FA2ECC01F6D486C5A2C277FA62F>I<3B7FFF803FFF80B5 +4913C014C0A214806C6E13803B01F00003E0007F12004B5A7F137C017E495A133EA2013F +49C7FC7FA290380F803EA214C001075BA214E001035BA2EB01F05D14F1EB00F95DA2147B +EC7FC0143FA25D141FA292C8FCA3143EA35CA214FC000F5BEA1F81EA3FC1EBC3F0EB07E0 +131FEBFFC06C5BA26C48C9FC6C5AEA03F02A3C7EA62F>121 D<003FB612F84815FCA416 +F8007EC7EA0FF0ED1FE0ED3FC0ED7F80EDFF00003C495AC7485A4A5A4A5A4A5A4A5A4A5A +4AC7FC495A495A495A495A495A495A495A49C7123C4848147E485A485A485A485A485A48 +B612FEB7FCA46C15FC27277DA62F>II< +127CA212FEB3B3B3AD127CA207476CBE2F>II +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd cmsy10 10.95 2 +/Fd 2 16 df3 D15 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fe ecrm0900 9 81 +/Fe 81 256 df<38038001390FF80380391FFE0700383FFFFE127838E00FF8384003F019 +077AB126>3 D<003C1378007E13FC38FF01FEA2EB81FFA2EA7F80003D137B00011303A4 +00031307EB0006A248130E0006130C000E131C000C1318001C13384813704813E0006013 +C018177FB31A>17 D<003C1378007E13FC38FF01FEA2EB81FFA2EA7F80003D137B000113 +03A400031307EB0006A248130E0006130C000E131C000C1318001C13384813704813E000 +6013C018177F871A>I<91393FE00FE0903A01FFF83FF8903A07E01EF83C903A1F800FF0 +7E903A3F001FE0FE017E133F4914C0485A1738484890381F8000ACB812C0A33B03F0001F +8000B3A7486C497EB50083B5FCA32F357FB42D>27 DII<017C1503D803FEED078026078780140F260F01C0141F26 +1E00E0EC3F00003E01F8147E003C017CEB01FE007C90397F8007FC913933FFFEF8007890 +38307FF900F89039380001F00218495A16075F4C5A161F4CC7FC163E5E023813FC007801 +305B007C4A5AEC7003003C01605B003E9038E007C0001EEBC00FD80F015C270787801FC8 +FC3903FE003FD8007C133E90C748131F03FCEBFF809239F801E1E0913A01F003C0700203 +9038078030DBE00F1338DA07C0EB0018020F49131C0380140C91381F001E4A013E130E02 +3E15065C14FC495A5C495A13075C4948150E011F021E130C91C7121F013E161C017E6E13 +18017CED803849020713300001923803C07049913801E1E049913800FF806C48ED1F0037 +3C7CB740>37 D<14C01301EB0380EB0F00130E5B133C5B5BA2485A485AA212075B120F90 +C7FC5AA2121E123EA3123C127CA55AB0127CA5123C123EA3121E121FA27E7F12077F1203 +A26C7E6C7EA213787F131C7F130FEB0380EB01C01300124A79B71E>40 +D<12C07E1270123C121C7E120F6C7E6C7EA26C7E6C7EA27F1378137C133C133EA2131E13 +1FA37F1480A5EB07C0B0EB0F80A514005BA3131E133EA2133C137C137813F85BA2485A48 +5AA2485A48C7FC120E5A123C12705A5A124A7CB71E>I<123C127EB4FCA21380A2127F12 +3D1201A412031300A25A1206120E120C121C5A5A126009177A8715>44 +DI<123C127E12FFA4127E123C08087A8715>I<1518A215381530 +A21570156015E015C0A214011580A2140315005C1406A2140E140CA2141C141814381430 +A214701460A214E05CA213015C130391C7FCA25B1306A2130E130C131C1318A213381330 +A213701360A213E05B12015BA2120390C8FCA25A1206120E120CA2121C1218A212381230 +12701260A212E05AA21D4B7CB726>II<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E007FB51280A319 +327AB126>IIII<000C14C0380FC00F90B5128015005C5C14F014C0D80C18C7 +FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000CEB07E0A2C713 +F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0FC06C131F003C1480 +6CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<14FE903807FF80011F +13E090383F00F0017C13703901F801F8EBF003EA03E01207EA0FC0EC01F04848C7FCA248 +C8FCA35A127EEB07F0EB1FFC38FE381F9038700F809038E007C039FFC003E0018013F0EC +01F8130015FC1400A24814FEA5127EA4127F6C14FCA26C1301018013F8000F14F0EBC003 +0007EB07E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB126>I<1230123C +003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401EC0380C7EA0700 +1406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FCA25BA55BA9131C +20347CB126>II<123C127E12FFA4127E123C1200B0123C127E12FFA4127E123C08207A9F15>58 +D<123C127EB4FCA4127E123CC7FCB0123C127EB4FCA21380A2127F123D1201A412031300 +A25A1206120E120C121C5A5A1260092F7A9F15>I<1706171E1778EE03E0EE0F80EE3C00 +16F0ED03C0030FC7FC153CEC01F0EC07C0021EC8FC1478EB01E0EB0780011EC9FC13F8EA +03E0000FCAFC123C12F0A2123C120FEA03E0EA00F8131EEB0780EB01E0EB0078141EEC07 +C0EC01F0EC003C150FED03C0ED00F0163CEE0F80EE03E0EE0078171E17062F2C7AA83C> +I<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202707FEC601FA202E0 +7FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010FB5FCA249800118C77E +A24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FFFE49B512E0A33336 +7DB53A>65 DIIIIIIII<017FB5FCA3 +9038003FE0EC1FC0B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C485A380F03F0 +3803FFC0C690C7FC20357DB227>IIIIIIIII<90381FE00390387FFC0748B5FC3907 +F01FCF390F8003FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13C0 +EA3FF013FF6C13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302001380 +157F153FED1FC0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C05B +39F1FC03F800E0B512E0011F138026C003FEC7FC22377CB42B>I<007FB712FEA3903980 +07F001D87C00EC003E0078161E0070160EA20060160600E01607A3481603A6C71500B3AB +4A7E011FB512FCA330337DB237>IIII<267FFF +FC90B512C0A3000101E090381FF80026007F80EB0FC0013F6E5A6E91C7FC6D6C130E010F +140C6E5B6D6C133801035C6E13606D6C13E06D6C485A5EDA7F83C8FCEC3FC715C6EC1FEC +EC0FFC5D14076E7EA26E7E815C6F7E9138063FC0140E4A6C7E9138180FF0EC380702707F +91386003FCECC0010101804A6C7E49C77E4981010E6E7E010C6E7E131C496E7E01786E7E +13FCD807FEEC1FFEB56C90B512F8A335337EB23A>I<003FB612FCA39039F80007F813C0 +90C7EA0FF0003EEC1FE0123C0038EC3FC00078EC7F801270EDFF004A5AA20060495AA24A +5A4A5AC7FC4A5A4A5AA24A5A4AC7FCA2495A495AA2495A495AA24948130C495AA2495A49 +C7FCA24848141CA2485A485A1638485A4848147816F84848130148481307153FB7FCA326 +337CB22F>90 D<007FB712FCB812FEA26C16FC2F047A703C>95 D97 DII<153FEC0FFFA3 +EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF3907E001FF48487E48487F8148C7FCA25A +127E12FEAA127E127FA27E6C6C5BA26C6C5B6C6C4813803A03F007BFFC3900F81E3FEB3F +FCD90FE0130026357DB32B>III<151F90391FC07F809039 +FFF8E3C03901F07FC73907E03F033A0FC01F83809039800F8000001F80EB00074880A66C +5CEB800F000F5CEBC01F6C6C48C7FCEBF07C380EFFF8380C1FC0001CC9FCA3121EA2121F +380FFFFEECFFC06C14F06C14FC4880381F0001003EEB007F4880ED1F8048140FA56C141F +007C15006C143E6C5C390FC001F83903F007E0C6B51280D91FFCC7FC22337EA126>IIIIII<2703F01FE0 +13FF00FF90267FF80313C0903BF1E07C0F03E0903BF3803E1C01F02807F7003F387FD803 +FE1470496D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE3FFFF0A33C217EA041> +I<3903F01FC000FFEB7FF09038F1E0FC9038F3807C3907F7007EEA03FE497FA25BA25BB3 +486CEB7F80B538C7FFFCA326217EA02B>II<3903F03F8000FFEBFFE09038F3C0F89038F7007ED807FE7F6C48EB1F80 +4914C049130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16C06D131F6DEB3F801600 +01FF13FC9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB512C0A325307EA02B>I< +903807F00390383FFC07EBFC0F3901F8038F3807E001000F14DF48486CB4FC497F123F90 +C77E5AA25A5AA9127FA36C6C5B121F6D5B000F5B3907E003BF3903F0073F3800F81EEB3F +F8EB0FE090C7FCAAED7F8091380FFFFCA326307DA029>I<3803E07C38FFE1FF9038E38F +809038E71FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487EB512E0A31A217FA01E> +II<1330A51370A313F0A21201 +A212031207381FFFFEB5FCA23803F000AF1403A814073801F806A23800FC0EEB7E1CEB1F +F8EB07E0182F7FAD1E>IIIII<3A7FFF807FF8A33A07F8001FC00003 +EC0F800001EC070015066C6C5BA26D131C017E1318A26D5BA2EC8070011F1360ECC0E001 +0F5BA2903807E180A214F3010390C7FC14FBEB01FEA26D5AA31478A21430A25CA214E05C +A2495A1278D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0FC025307F9F29>I<003F +B512F0A2EB000F003C14E00038EB1FC00030EB3F800070137F1500006013FE495A13035C +C6485A495AA2495A495A49C7FC153013FE485A12035B48481370485A001F14604913E048 +5A387F000348130F90B5FCA21C207E9F22>I<3801C0073907F01FC0000F80A400075C26 +01C007C7FCCAFCA7EB7F803803FFF0380F80FC381C003E003F133F6D6C7E6E7EA26E7EEA +1F00C7FCA4EB01FF131FEBFF873803FC07EA0FF0EA1FC0EA3F80127F13004815C05AA314 +0FA26C131F6C133B3A3F8071F180391FC1E1FF2607FFC013003900FE003C22327DB026> +228 D<9038E003803903F80FE0000780A400035C3900E0038090C9FCA7EB07F0EB3FFE90 +38FC1F803901F007C03903C001E000078048486C7E48C7127CA248147E003E143E007E14 +3FA300FE1580A8007E1500A36C147EA26C147C6D13FC6C6C485A00075C3903F007E03900 +FC1F80D93FFEC7FCEB07F021327EB026>246 D<013813709038FE01FCA2EBFF03A2EBFE +01A2903838007090C9FCA8D803F0133F00FFEB0FFFA30007EB007F000380B35DA35D1201 +6D4813800000903803BFFC90387E073FEB1FFED907F8130026327EB02B>252 +D255 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Ff ecrm0600 6 10 +/Ff 10 58 df<13FF000313C0380781E0380F00F0001E137848133CA248131EA400F813 +1FAD0078131EA2007C133E003C133CA26C13786C13F0380781E03803FFC0C6130018227D +A01E>48 D<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>II<13FF000313C0380F03E0381C00F014F8003E13FC147C +A2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00F01478147C +143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFFC000011300 +18227DA01E>I<14E01301A213031307A2130D131D13391331136113E113C1EA01811203 +EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFFA218227DA1 +1E>I<00101330381E01F0381FFFE014C01480EBFE00EA1BF00018C7FCA513FE381BFF80 +381F03C0381C01E0381800F014F8C71278A2147CA21230127812F8A214784813F8006013 +F0387001E01238381E07803807FF00EA01F816227CA01E>II<1230123C003FB5FCA24813FE14FC3860001C1438 +14704813E014C0EA0001EB0380EB07001306130E5BA25BA21378A35BA41201A76C5A1823 +7CA11E>I<137F3803FFC0380781E0380E00704813380018131C1238A3123C003F133838 +1FC078EBE0F0380FF9E03807FF80120114C0000713F0380F0FF8381C03FC383801FE3870 +007E141F48130F1407A314060070130E0078130C6C1338001F13F03807FFC0C613001822 +7DA01E>I<13FE3803FFC0380781E0380E0070481378003C133848133CA200F8131EA314 +1FA40078133FA26C137F121C380F01DF3807FF9F3803FE1EC7FCA2143E143C001C133800 +3E13781470003C13E0381801C0381C0780380FFE00EA03F818227DA01E>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fg ecrm0800 8 10 +/Fg 10 58 df48 D<130C133C137CEA03FC12FFEAFC7C1200 +B3B113FE387FFFFEA2172C7AAB23>III<140E +A2141E143EA2147E14FEA2EB01BE1303143E1306130E130C131813381330136013E013C0 +EA0180120313001206120E120C5A123812305A12E0B612FCA2C7EA3E00A9147F90381FFF +FCA21E2D7EAC23>I<000CEB0180380FC01F90B512005C5C14F014C0D80C7EC7FC90C8FC +A8EB1FC0EB7FF8380DE07C380F801F01001380000E130F000CEB07C0C713E0A2140315F0 +A4127812FCA448EB07E012E0006014C00070130F6C14806CEB1F006C133E380780F83801 +FFE038007F801C2D7DAB23>II<123012 +3C003FB512F8A215F05A15E039700001C000601480140348EB0700140E140CC7121C5C14 +3014705C495AA2495AA249C7FCA25B130E131EA2133EA3133C137CA413FCA913781D2E7C +AC23>III E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fh cmr10 10.95 5 +/Fh 5 62 df<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B +1203A2485AA2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E12 +3FA37EA27F120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01 +C0EB00E014701430145A77C323>40 D<12C07E12707E7E121E7E6C7E7F12036C7E7F1200 +7F1378137CA27FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614 +C0130FA31480A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E +121C5A5A5A5A145A7BC323>I<1506150FB3A9007FB912E0BA12F0A26C18E0C8000FC9FC +B3A915063C3C7BB447>43 D50 D<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12 +F0A26C18E03C167BA147>61 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fi cmmi10 10.95 6 +/Fi 6 85 df<17075F84171FA2173F177FA217FFA25E5EA24C6C7EA2EE0E3F161E161C16 +38A21670A216E0ED01C084ED0380171FED07005D150E5DA25D157815705D844A5A170F4A +5A4AC7FC92B6FC5CA2021CC7120F143C14384A81A24A140713015C495AA249C8FC5B130E +131E4982137C13FED807FFED1FFEB500F00107B512FCA219F83E417DC044>65 +D<49B712F818FF19E090260001FEC7EA3FF0F007F84B6E7E727E850203815D1A80A20207 +167F4B15FFA3020F17004B5C611803021F5E4B4A5A180FF01FE0023F4B5A4B4A5ADD01FE +C7FCEF07F8027FEC7FE092B6C8FC18E092C7EA07F84AEC01FE4A6E7E727E727E13014A82 +181FA213034A82A301075F4A153FA261010F167F4A5E18FF4D90C7FC011F5E4A14034D5A +013FED1FF04D5A4AECFFC0017F020790C8FCB812FC17F094C9FC413E7DBD45>I<49B9FC +A3D9000190C7120718004B157F193F191E14035DA314075D191CA2140F5D17074D133C02 +1F020E13384B1500A2171E023F141C4B133C177C17FC027FEB03F892B5FCA39139FF8003 +F0ED00011600A2495D5CA2160101035D5CA293C9FC13075CA3130F5CA3131F5CA2133FA2 +5C497EB612F8A3403E7DBD3A>70 D<49B56C93B512C050148062D90001F18000704B90C7 +FC03DF5F1A0E1A1D1403039FEE39FC1A711A739126078FE015E3030F5FF101C3F1038714 +0F020E93380707F0A2F10E0F021E161C91261C07F05E1938F1701F143C023804E05BA295 +3801C03F0278ED038091267003F85EF00700060E137F14F002E04B91C8FCA24E5B01015E +4A6C6C5D60943801C00113030280DA03805BA294380700030107150E91C700FE5D5F1907 +495D010E4B5CA24D130F011E6E5A011C60705A013C171F017C92C7FC01FE027E5DD803FF +4D7EB500FC017C017FB512E0167804385E5A3E7CBD58>77 D<49B77E18F818FFD90001D9 +00017F9438003FE04BEC0FF0727E727E14034B6E7EA30207825DA3020F4B5A5DA24E5A14 +1F4B4A5A614E5A023F4B5A4B4A5A06FEC7FCEF03FC027FEC0FF04BEBFF8092B500FCC8FC +5F9139FF8001FE92C7EA7F80EF1FC084496F7E4A1407A28413035CA2170F13075C60171F +130F5CA3011F033F5B4AEE038018E0013F17071A004A021F5B496C160EB600E090380FF0 +1E05075B716C5ACBEAFFE0F03F8041407DBD45>82 D<48B912FCA25A913A0003FE000F01 +F84A1301D807E0EE00F8491307491778000F5D90C7FC001E140FA2001C4B1470123C0038 +141FA200785D1270033F15F000F018E0485DC81600157FA25EA215FFA293C9FCA25CA25D +A21403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147FA214FF497F001FB6 +12FCA25E3E3D7FBC35>84 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fj ecbx1440 14.4 47 +/Fj 47 253 df45 DI<151E153E15FE1403140F147FEB07FF0003 +B5FCB6FCA3EBF87FEAFC00C7FCB3B3B3A6007FB712FCA52E4E76CD42>49 +DI<913807FFC0027F13FC0103B67E010F15E090 +261FF80313F890267FC0007F01FEC7EA3FFE48488148486E138013FE486C6C6D13C08048 +17E080A66C5B18C06C5B6C90C75AD80038168090C8FC4C1300A24C5A5F4C5A4B5B4B13C0 +030F5BDB7FFEC7FC91387FFFF816C016FCEEFF80DA000313E09238007FF8EE3FFE707E70 +138018C07013E018F07013F8A218FC82A218FEA3EA03C0EA0FF0EA3FFC487EA2B5FCA218 +FCA25E18F8A26C4816F0495C4916E0D83FE04A13C06C485CD80FF04A1380D807FE91387F +FE003B03FFE003FFFC6C90B65A6C6C15E0010F92C7FC010114FCD9001F1380374F7BCD42 +>I<17FC1601A216031607160FA2161F163F167FA216FF5D5DA25D5D5D167F153E157E15 +FC15F8EC01F01403EC07E015C0EC0F80141FEC3F00143E5C14FC495A5C495A1307495A5C +49C7FC5B137E137C5B1201485A5B485A120F485A90C8FC123E127E5ABA1280A5C901FCC7 +FCAF021FB71280A5394F7CCE42>I<486C150601F0153E01FEEC01FED9FFF0133F91B65A +5F5F5F5F5F94C7FC16FC5E16E093C8FC15FC01F0138091CAFCAC913807FF80023F13F891 +B512FE01F36E7E9026FFFC0113E09139E0007FF891C76C7E496E7E01F86E7E5B70138049 +16C0C9FC18E08218F0A418F8A31203EA0FE0EA3FF8487EA212FF7FA218F0A25B5E6C4816 +E05B01C016C06CC85A18806C6C4A13007FD80FF04A5A6C6CECFFFCD803FE4913F02701FF +E00F5B6C6CB612806D92C7FC010F14F8010114C09026003FFCC8FC354F7ACD42>II66 +D<932603FFF01407047F01FF140F0307B600E0131F033F03F8133F92B700FE137F020391 +26C003FF13FF020F01F8C7EA3FC1023F01C0EC0FE391B5C80003B5FC4901FC8149498149 +01E082011F498249498292CA7E4948834948835A4A83485B4885A24849187FA2485B1B3F +A2485B1B1FA25AA21B0091CDFCA2B5FCAE7EA280A36C1A1FA36C7FA21B3F6C7F1B3E6C7F +1B7E6C6D187C6C1AFC6E18F86C19016D6CEF03F06D7E6FEE07E06D6DEE0FC001076DEE1F +806D01F8EE3F006D6D16FE6D01FF4B5A023F01C0EC07F8020F01FCEC3FF00203903AFFC0 +01FFC0020091B6C7FC033F15FC030715F0DB007F1480040301F0C8FC505479D25F>II70 D<932603FFF01407047F01FF5C0307B600E05B033F03F85B +92B700FE5B02039126C003FF5B020F01F8C7EA3FC1023F01C0EC0FE391B5C80003B5FC49 +01FC814949814901E082011F498249498292CA7E4948834948835A4A83485B4885A24849 +84A2485B87A2485B87A25AA298C8FC91CFFCA2B5FCAE7E067FB7128080A37E95C76C90C7 +FC807EA36C7FA26C7FA26C7F7E806C7F137F6D7E816D6D93B5FC01077F6D01F85D6D7F6D +01FF5D023F01E0EC0FEF020F01FCEC3FE30203903AFFE001FF81020091B6C6FC033F03FC +133F030703F0130FDB007F02801303040301F8CAFC595479D267>III +75 DII80 D82 +DI<00 +3FBB12FCA59126C0007FEB000301FCC7ED003FD87FF0F00FFE49180749180349180190C8 +1600A2007E1A7EA3007C1A3EA500FC1A3F481A1FA6C91700B3B3AC49B912C0A550517BD0 +5B>I86 DI97 DI<913803FFE0023F13FE91B67E010315E0010F9038003FF8D93FFCEB07FC4948 +497E4948131F4849497E485B485BA24890C7FC5A5B003F6F5A705A705A007F92C8FC5BA3 +12FFAD127F7FA3123F7F6CEE0F80A26C6D141F18006C6D5C6C6D143E6C6D147E6C6D5C6D +6C495A6DB4EB07F0010F9038C01FE06D90B5128001014AC7FCD9003F13F8020313803138 +7CB63A>I<943803FF80040FB5FCA5EE003F170FB3A4913803FF80023F13F849B512FE01 +07ECFF8F011F9038C03FEF90273FFE0007B5FCD97FF8130149487F484980484980484980 +488291C8FC5A5B123FA2127F5BA312FFAD127FA37F123FA3121F7F6C5E6C6D5C5F6C6D91 +B5FC6C6D5B6C6D4914E0D97FFCD90FEFEBFF80D91FFFEB7F8F010790B5120F010114FC6D +6C13E00207010049C7FC41547CD249>I<913807FF80027F13F849B512FE01076E7E011F +010313E0903A3FFC007FF0D97FF06D7E49486D7E4849130F48496D7E48824890C77E1880 +485A82003F17C0A3485A18E082A212FFA290B8FCA401FCCAFCA6127FA37F123FA2EF03E0 +6C7E17076C17C06C6D140F18806C6D141F6C6DEC3F006C6D147ED97FFC495AD91FFFEB07 +F86D9038E03FF0010390B512C001005D023F01FCC7FC020113E033387CB63C>IIII<133FEBFFC0487F487FA2 +487FA66C5BA26C5B6C5B013FC7FC90C8FCAEEB1FF8B5FCA512017EB3B3A6B612F0A51C54 +7CD324>I107 +DIII<913801FFC0023F13FE91B67E010315E0010F018013F8903A3FFC001F +FED97FF0EB07FF49486D7F48496D7F48496D7F91C8127F4883488349153F001F83A2003F +8349151FA2007F83A400FF1880AC007F1800A3003F5F6D153FA2001F5FA26C6C4B5AA26C +6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE6DB46CB45A010790B512F0 +010115C0D9003F49C8FC020313E039387CB642>II<90393FF001FCB590380FFF804B13E0037F13F0 +9238FE1FF89138F1F83F00019138F07FFC6CEBF3E015C0ECF780A2ECFF00EE3FF84AEB1F +F0EE0FE093C7FC5CA45CB3ABB612FEA52E367DB535>114 D<903903FFC00E011FEBFC1E +90B6127E000315FE3907FE003FD80FF0130F4848130348481301491300127F90C8127EA2 +48153EA27FA27F01F091C7FC13FCEBFF806C13FEECFFF06C14FE6F7E6C15E06C816C15FC +6C81C681133F010F15801301D9000F14C0EC003F030713E0150100F880167F6C153FA216 +1F7EA217C07E6D143F17807F6DEC7F0001F85C6DEB03FE9039FF801FFC486CB512F0D8F8 +1F14C0D8F00791C7FC39E0007FF02B387CB634>I<147CA614FCA41301A31303A21307A2 +130F131F133F137F13FF1203000F90B512FEB7FCA426007FFCC8FCB3A9EE0F80ABEE1F00 +6D7EA2011F143E806D6D5A6DEBC1F86DEBFFF001005C023F1380DA03FEC7FC294D7ECB33 +>III121 D228 D<027EEC1F80DAFF80EB7FC0496D497E496D48 +7F496D487FA24982A46D5EA26D496C5B6D496C5B6D496D5A027EC7EA1F8091CCFCACD93F +F8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35FA25F137F5F6D6C14F7DC01 +E713F06D6CD907C7EBFFC0903A0FFF801F876D90B51207010114FC6D6C13F0020701C091 +C7FC42537CD149>252 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fk ecbx2074 20.74 18 +/Fk 18 117 df49 +D<92381FFF804AB512FC020FECFF80023F15F091B712FC010316FF010FD9001F14C0D91F +F8010380D93FE0010014F8D97F80023F7F4848C86C7F01FC6F7F48486F148048486F14C0 +4848817114E0484818F04982003F7113F813F8D87FFE7013FC6D7E6E17FEB56C81A2801A +FFA284A56C5BA26C5B6C495DD807FEC9FCD801F818FECBFCA2601AFCA21AF8601AF0601A +E095B5FC1AC04D14801A005F614D5B4D5B614D5B4D5B614D90C7FC4D5A4C13F8604C5B4C +5B4C5B4C48C8FC4C5A4C5A5F4C5A4B13804B90C9FC4B5A4B5A4B5A4B48153F4B5A4B5A93 +C9FC4A48167E4A5A4A5A4A5A4A5A4A5A4A4816FE4ACAFC495AD903F817FC4A1601495A49 +48160F49B9FC5B5B90BAFC5A4819F85AA25A5A5A5ABBFCA21AF0A4487177F05B>I<9238 +03FFF8037FEBFFC00203B612FC020F15FF027F16C09127FFFC007F13F0010301C0010F13 +FC4948C700037FD91FF86E7FD93FE06E14C049488191C98001FE707F2601FFC08302F081 +486D838080486D8384A38192C8FCA46C5F5C6C495F6C5BEB3FE00107C95C90CA5AA26260 +6295B55AA24D5C97C7FC4D5B4D5B614D5B4D13C0057F5B4D48C8FC04035B4BB512F04AB6 +12804DC9FC17F8EFFFE018FC91C86CB47E050F13E0050313F87113FE716C7E1AC0727F72 +7F727F86727F86A2721480A21BC0A21BE084A31BF0A3EA03FE380FFF80487F487F487FA2 +B57EA31BE0A260A21BC05C6C1A804A5D4A18006C5B49C9485BEA1FF801E04C5B6C6C4C5B +D807FC606C6C4C5B2601FFC092B55A6C01F002035CD93FFF020F49C7FC6D01F8017F5B01 +0790B712F0010117C06D6C93C8FC020F15F8020015C0030701F8C9FC4C7379F05B>I<19 +7F61A2606060A26060A2606095B5FCA25F5FA25F5F5FA25F5FA217FD1601EE03F917F116 +07EE0FE1EE1FC11781163FEE7F01167E16FEED01FCED03F816F01507ED0FE016C0151FED +3F80ED7F00157E15FE4A5A5D14034A5A4A5A5D141F4A5A92C7FC147E14FE495A5C130349 +5A5C495A131F495A91C8FC5B13FE5B485A1203485A5B120F485A5B48C9FC5A12FEBDFCA6 +CA000391C7FCB3A4030FB9FCA650727BF15B>I<0160EF018001781707017F173F02E0ED +01FF02FE151FDAFFF80107B5120092B75AA261616119C06196C7FC6018F818E018804DC8 +FC17F817C0D97E3F49C9FC0200138092CBFCB3923803FFE0033F13FF92B612E0020315F8 +020F15FE913B3FFE007FFF80DA7FE0011F7FDAFF80010713F0D97FFCC76C7F4A6E7F02E0 +6E7F4A824A6F138091C914C084017E18E0013C8290CA14F0A21AF8A21AFC84A21AFEA51A +FFA5EA03F8EA0FFE487E487F487FA2B57EA31AFEA45C4E13FC6C5B91C9FC01FC18F813F0 +D83F804C13F0A26C6C18E04E13C06C7E6D93B512806C6C18006C6C4B5B6D5D6C6C6C4A5B +6C6D4A13F0D97FF0023F5BD91FFC91B55A90270FFFC00F91C7FC6D90B612FC010116F06D +6C15C0021F92C8FC020314F09126003FFEC9FC487377F05B>III65 +D75 D<92381FFFC00203B512FE023FECFFC091B712F0010316FC +010FD9E00313FFD91FFCC76C13C0D93FE0021F7FD97F806E7FD9FFF06E7F6E6E7F486D6E +7F6E824870806E8186A2727FA46C496F7FA26C5BEB3FF0EB0FC090CAFCA960040FB6FC03 +03B7FC157F0203B5EAFC1F021F140091B512F0010391C7FC010F13FC4913F0017F13C090 +B55A4891C8FC485B485B485B485B5A5C5A4AF007E0A2B5FC5CA260A360A26E92B5FC7E6E +EC01EF17036C6DDA07C79038F80FC06C6DEC0F876C6DDA1F07EBFC1F6C6DDA7E039038FF +7F806C6D6C48486CECFF006C9138E00FF86C6C90B5D8E0005C011F4B013F5B010792C76C +13F0010002F802075B020701C0020090C7FC53507ACE5B>97 D<923801FFFC031FEBFFC0 +92B612F8020715FE021F6F7E027FD9E03F13E09127FFFE00077F010301F801017F49496D +7F4901C0EC3FFE4949814990C86C138049486F13C013FF4A6F13E05A48496F13F0A24849 +17F848831AFCA2484981A24819FEA3485B197F1AFFA3B5FCA491BAFCA402C0CBFCA77EA4 +807EA37E80A26C193FA26C6D177F1A7E6C7F6C19FE6EEE01FC6C7F6DEF03F86D6DED07F0 +6D6DED0FE06D6DED1FC06D01F8ED3F806D6DEDFF006D01FFEC03FE6D6C01E0EB0FFC6E01 +FEEBFFF8020F90B612E002031680DA007F4AC7FC030F14F0DB007F90C8FC48507BCE53> +101 D103 D<903803FFF8B6FCA6C67E131F7FB3AFF07FF80503B512 +C0051F14F0057F14FC94B7FC932603FE0180932707F0007F7FDC0FC06D7F4CC77E043E82 +4C6E7F5E4C80DBF9E082A2EDFBC0DBFF80808793C8FCA25DA35DA45DB3B3A9B8D8803FB7 +12E0A65B787AF766>II<903801FFF8B6FCA6C67E131F7FB3B3B3B3B3AFB81280A629787BF732> +108 D<902603FFF0EC7FF8B60203B512C0051F14F0057F14FC94B7FC932603FE01809327 +07F0007F7FC66CDA0FC06D7F011F4AC77E6D023E824C6E7F5E4C80DBF1E082A2EDF3C0DB +F780808793C8FC15FF5DA35DA45DB3B3A9B8D8803FB712E0A65B4E7ACD66>110 +D<902603FFF8903801FFF0B6021F13FF94B612E0040315FC040F15FF93263FF80114C093 +27FFC0003F7FC66CD9F9FEC76C7F011FD9FBF8020713FC6DD9FFF06E7F4C6E7F04806E80 +93C96C7FA24B707F4B707F5D747FA2747FA2888688A286A21D80A4861DC0AF501480A51D +0062A26462A264626462646F4C5B816F4C5B97B55A704A91C7FC704A5B04F04A5B704A5B +DBF9FC023F5BDBF8FF91B512C093267FF00791C8FC041FB612FC040715F0040115C0DC00 +3F49C9FC050713C094CCFCB3A8B87EA65A6F7BCD66>112 D<15FCA71401A51403A31407 +A3140FA2141FA2143F147F14FFA25B5B5B131F5B90B5FC000F91B612FCB9FCA5D8000701 +FCC9FCB3B3A4F01F80AF183F6D170081A2187E6D7F18FE6D6E5B6E4A5AEEC0036E6D485A +6E9038F80FE0020790B55A6E5D02004AC7FC031F13F8030113C0396E7DEC47>116 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fl ecsl1095 10.95 36 +/Fl 36 224 df<007FB5FCB512FEA418057C951E>45 D<121E127FEAFF80A413005A123C +0909778819>I<153015F014011407143F903803FFE0137FEBFFCFEBFC0F1300141F15C0 +A5143F1580A5147F1500A55C5CA513015CA513035CA513075CA5130F5CA3131F497EB612 +F8A31D3D78BC2D>49 DII<160C16 +1C163C167C16FCED01F8A215031507150F151FED3FF01537156715C7EC01871403913807 +0FE01406140C1418143014709138E01FC014C0EB0180EB03001306130E49EB3F8013185B +5B5B12014848EB7F0090C7FC12065A5A12384814FE1260B8FCA3C73801FE00A25DA41403 +A25DA314074A7E0107B512F8A3283E7BBD2D>I<01061403D907C0131F9138F801FE91B5 +12FC16F84914F016C01680EDFC0090380C7FF091C8FC131C1318A513381330A59038701F +E0903860FFF8903863E03E90386F001F017CEB0F80017814C049EB07E04914F049130390 +C7FC16F8A61507A3121FEA7F80A2150F00FF15F0A290C713E048141F00E015C0153F0060 +15800070EC7F00A26C14FE003C495A6C495A6CEB0FE03907E03FC06CB5C7FCC613FCEB1F +E0283F7ABC2D>II<12035A13C090B712805AA217005E485D5E001CC8 +1270485D00305D150100704A5A00604AC7FC150E5D485CC8123015705D4A5A4A5A4AC8FC +140EA25C5C1478147014F0495AA213035C1307495AA2131FA249C9FCA25B137E13FEA312 +015BA21203A3485AA5120F5BA26C5A6C5A294074BD2D>I<17C04C7EA21603A216078316 +0FA2161FA24C7EA21667A216C7A292380187FC1683ED0303A2150683ED0C01A21518A203 +307F1570ED600015E05D14014B804AC7127FA21406A24A81173F5C021FB6FC5CA20260C7 +EA3FE0171F5CA2495A8449C8120FA21306130E010C82131C011815071338137801F88248 +7ED807FEED1FFEB500C00103B512FC4C14F8A23E417DC044>65 D<011FB7FC4916F018FC +903B007FE00003FE023F913800FF80F07FC04B143FF01FE019F0180FA2027F16F85DA502 +FF16F092C8121F19E0183F19C0F07F8049EEFF004A4A5A4D5AEF0FF0EF3FE04CB4C7FC49 +B612F8EFFF8002FCC7EA1FE0EF07F0EF03FC717E13074A6E7E1980187FA219C0130F5CA5 +011FEEFF805C19005F4D5AA2013F4B5A4A4A5A4D5AEF7FE0017FEDFF8001FF020790C7FC +007F90B612FC17F0B8C8FC3D3E7DBD40>I<4BB46C1370031F13F0037F01FC13E0913A03 +FF803E01913A0FF8000F83DA1FE0EB03C7DA7F80EB01EF4AC8FCD903FCED7FC04948153F +495A4948151F495A4948150F01FF178091C91207485A12035B485A000F180084485AA248 +485EA295C7FC485AA412FF5BA790CCFCA21818183818307FA2007F1770186018E0003F5F +6D1501606C6C15034DC7FC6C6C150E12076C6C5D6D15786C6C5D6C6C4A5AD93FC0EB0780 +6D6C011FC8FCD907FE13FC0101B512F06D6C13C0DA07FEC9FC3C4276BF41>I<011FB7FC +4916E018F8903B007FE00007FE023FEC00FFF03FC04B6E7E180F727E727E85027F15014B +6E7EA28585A202FF178092C9FCA54918C05CA41A8013034A16FFA41A0013074A5DA261A2 +4E5A130F4A4B5AA261180F61011F4C5A4A153F614EC7FC18FE4D5A013F4B5A4A4A5AEF1F +E0EF7F80017F4A48C8FC01FFEC0FFC007F90B612F01780B700FCC9FC423E7DBD45>I<01 +1FB812F05BA29026007FE0C7127F023F150F18034B14011800A31970147F4B1560A502FF +146092C7FCA3190017E0495D4A1301A21607161F91B6FC495DA29138FC003F160F160716 +03010792C8FC5CA2196019E019C0010F14064A90C712011980A218031900011F5E5C180E +A2181E181C013F163C4A157C4D5A1703017F150F01FFEDFFF0007F90B7FCA2B95A3C3E7D +BD3D>I<011FB812E05BA29026007FE0C7FC023F151F18074B14031801A31800147F4B15 +C0A514FF92C71260A3190017E0495D5C160116031607161F49B65AA39138FC003F160F16 +07010792C8FC4A7FA5010F14065C93C9FCA4131F5CA5133F5CA3137F497E007FEBFFF0A2 +B6FC3B3E7DBD3B>I<4BB46C1370031F13F0037F01FC13E0913A03FF803E01913A0FF800 +0F83DA1FE0EB03C7DA7F80EB01EF4AC8FCD903FCED7FC04948153F495A4948151F495A49 +48150F01FF178091C91207485A12035B485A000F180084485AA248485EA295C7FC485AA4 +12FF5BA6043FB512E090C8FCA29339001FFC00715AA26D5EA2127FA2171F6C7E60A26C7E +A26C6C153F12076C6C4B5A7F6C6C15FF6C6CEC01CFD93FC0EB0787D91FF0EB1F07D907FE +9038FC03800101B5EAF0016D6C01C0C8FCDA07FEC9FC3C4276BF47>I<013FB5D8F007B5 +12FEA39026007FF0C7380FFE006E486E5AA24B5DA4180F147F4B5DA4181F14FF92C85BA4 +183F5B4A5EA491B8FC5B6102FCC8127FA318FF13074A93C7FCA45F130F4A5DA41703131F +4A5DA41707133F4A5DA3017F150F496C4A7E007F9026FFC00FB512F8B65BA2473E7DBD44 +>I<013FB512F0A39039007FF0006E5AA25DA5147F5DA514FF92C7FCA55B5CA513035CA5 +13075CA5130F5CA5131F5CA5133F5CA3137F497EB612E05DA2243E7DBD21>I<011FB500 +F0903803FFFE5B609026007FF0C7000113E06E486E130019FC4B15F0614E5A0607C7FC18 +0E027F5D4B5C60EF01C04D5A4DC8FC02FF140E92C75A17705F4C5A4C5A49020FC9FC4A13 +1E163F5E4C7E15030103496C7EECFC0E4B6C7E15389238E01FF0ECFDC049B4486C7E1500 +4A6D7E14F8707EA2010F6E7E5C707FA2717EA2011F6F7E5C717EA2717EA2013F6F7E5C84 +1703017F4B7E496C4A13C0007FD9FFC090B512FE61B6FC473E7DBD46>75 +D<011FB512FC5BA29026007FF8C8FCEC3FE0A25DA5147F5DA514FF92C9FCA55B5CA51303 +5CA513075CA21830A21860130F5CA218C0A3011F15014A15801703A21707EF0F00013F5D +4A5C5F17FE017F140301FF143F007F90B6FC5FB8FC343E7DBD38>I<90263FFFE0933807 +FFFC6F5EA2D9007F94381BFC00023FEF1FF8DA3BF816370233601A67A2DA31FC16C7F101 +8F147102619338030FE0A2DA60FE1506A2F10C1F14E0DAC07F03185B1930A219601A3F01 +016D6C14C0028060F00180F003006F7E0606137F130302004B91C7FC6F7E60A24E5B495E +01066D6C5D60A24D5ADB03F81401010EED0300010C03065CA26F6C5AA24D1303131C0118 +4B5CED00FE5F5F19070138EC7F80013060013892C7FC137801FC027E140FD807FF023C4A +7E007F01F0030FB512F0B502385B1618563E7DBD53>I<90263FFFF091381FFFFEA281D9 +003F030013C06E6CED3F00023F163CDA33FE151C1918EC31FFA202306D14381470912660 +7FC01430A26F7EA26F6C147014E04A6C6C1460A26F7E15037014E00101130102806D5C6F +7FA2707E18010103EC3FE091C75DEE1FF0A2EE0FF8180349EC07FC010694C7FCEE03FEA2 +EE01FF60010E6E1387010C1686EF7FC6A2EF3FE618EE011CED1FFE01185E170FA2170717 +03133801306F5A13380178150013FCD807FF1678007F13F0B51630A2473E7DBD44>II<011FB612FE49EDFFC018F0903B007FE0000FFC023F +EC03FEEF00FF4BEC7F80F03FC0A2F01FE0A2147F5D19F0A402FFED3FE092C8FCA219C018 +7F19805B4AEDFF004D5A60EF07F84D5A0103ED3FC04A49B4C7FC91B612FC17E002FCCAFC +A213075CA5130F5CA5131F5CA5133F5CA3137F497E007FEBFFC0A2B6FC3C3E7DBD3D>I< +013FB612F017FF18E0903B007FE0003FF8023FEC07FCEF01FE4BEB007F1980F03FC0A2F0 +1FE0147F4B15F0A502FFED3FE092C8FCA219C0F07F80A249EEFF004A4A5A4D5AEF07F0EF +1FE0EF7F800103DA03FEC7FC91B612F017C09139FC0007F0EE01FC70B4FC01076F7E4A14 +3F84717EA3130F5CA5011F153F5CA5013F17035CA21907017F1706496C021F130E007FD9 +FFC0150CB691380FF01C943803F878CBEAFFE0F03F8040407DBD43>82 +D<03FF1307020713E0021FEBF80E91397F00FE1ED901FCEB1F3ED903F0EB07BE4948EB03 +FE49481301494814FC91C8FC49157C133E137E173C491538A66D1530A26D1500808080EB +7FFCECFFC06D13FCEDFF806D14E06D14F80103806D80D9003F7F1403DA007F1380150715 +016F13C0167F163FA2161F1218A3160F161F00381680A31700003C5D163E007C157E007E +157C007F15FC6D495A6D495AD87DE0495AD8F8F8EB1FC0D8F07F017FC7FC39E01FFFFC01 +0713F048C613C030427BBF32>I<0007B912E0A33C0FFC001FF0003F01E0160F01801603 +90C7491301121E001C1700A212180038143F00304B14C0A35AA2157F485DA3C81600A215 +FF93C9FCA55C5DA514035DA514075DA5140F5DA5141F5DA3143FEC7FF80003B612FE5EA2 +3B3E76BD41>IIII< +010FB500F090387FFFF8495CA2D9003F90C7001F1300DA1FFCEC07F8020F16E002071680 +96C7FC6E6C1406606E6C5C18386E6D5B606F6C5B4D5A6F6C48C8FC170692381FF00E5F92 +380FF8185F6F6C5A5FED03FF5F6F90C9FCA26F7FA2707EA24C7E5DEE9FF0ED031F03067F +ED0C0F031C7FED380703707FED600303C07F4A487E0203814AC7FC140E020C6E7E5C4A6E +7E5C02E06E7E495A49486E7E49C8FC496F7E4982D97F80140F2603FFC091383FFF80007F +01F849B512FEB55AA2453E7EBD44>II<010FB712FCA3923980000FF8D91FF8C7EA1FF014E04AEC +3FE091C8EA7FC0011EEDFF80494A1300A201384A5A4C5A494A5AA201604A5A4C5A4C5A49 +4A5AA24B90C7FC90C7485A4B5AA24B5A4B5A4B5A4B5AA24B5A4A90C8FC4A5A5D14074A5A +4A5A4A5AA24A48EB01804A5A4990C7EA0300495AA2495A49485C49481406A24948140E49 +5A495A4890C85A173C485A4848157C484815FC494A5A001F15074848141F4848EB01FFB8 +FC5FA2363E7BBD37>I<0470133CDB01FC13FE030380705A150716FC03035CEEF800DB00 +E0137893C9FCA417C04C7EA21603A2160783160FA2161FA24C7EA21667A216C7A2923801 +87FC1683ED0303A2150683ED0C01A21518A203307F1570ED600015E05D14014B804AC712 +7FA21406A24A81173F5C021FB6FC5CA20260C7EA3FE0171F5CA2495A8449C8120FA21306 +130E010C82131C011815071338137801F882487ED807FEED1FFEB500C00103B512FC4C14 +F8A23E4E7DCD44>196 D220 D<03FF010792393FC001C0020701E0923801 +FFF8021FD9F80E02079038FE038091277F00FE1E91391FC03F87D901FCD91F3E91397F00 +07CFD903F0D907BE02FCEB01EF4948D903FE4948EB00FF494801014A48147F4A4A4A1500 +49C84A488049037C010F81013E60017E171F053C8349033849C8120EA66D03306E140CA2 +6D92C76D91C7FC6E836E836E83D97FFE70B47EDAFFC017F06D01FC6F13FFDBFFC017F06D +02F06E14FC6D6E6E8001036E02008001006E033F80023F6D030F8002036E020080DA003F +170F03036D03007F0300183F706C707E043F170F041F1707A2040F170300181706A30407 +1701040F17030038DCC00E5EA305805F003C031F010F150705005F007C4B49150F007E03 +7E6E4A5A007F037C6E92C7FC6D02FC6E5C6D49486E147ED87DE0494802785CD8F8F8D90F +C0D93E3EEB03F028F07F803F80903A3C1FE00FE027E01FFFFEC7D83807B51280010701F8 +030149C8FC27C0007FC0913930001FF062427BBF64>223 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fm ecbx2488 24.88 31 +/Fm 31 256 df[148 145 121 272 163 65 D[134 142 121 269 154 I[<97263FFFE017E0071FB616010603B700F01503063F04 +FC15074DB96C140F050F06E0141F053F18F84CB7D8000101FE143F040703C09026000FFF +147F041F02FCC8000101C013FF047F02C06F6C6C5A93B6CA381FF803030302F8943807FC +074B02E0EF03FE031F0280943800FF0F4B91CCEA7F9F4B01FC73B5FC4AB548854A4A1907 +4A02C0854A4A854A91CDFC4A49864A498791B54887498A5E494A87494A875B4C874991CF +FC8C495B498A5D90B51E7FA2485C213F485C211FA2485CA248200FA25D5AA22107A2485C +A29EC7FCA25AA492D3FCA3B6FCB3A27EA381A47EA46C80F907E0A37E81A27E210F6C6E1E +C0A36C80211F6C6E1E80A26D1F3F6F1E007F6D6D65701C7E6D1FFE70646D1E016D6E515A +6D8070515A6D1E0F6E6D646E6D515A6E6D515A6E6E1A7F6E6E50C7FC6E02F04F5A6E6E4F +5A6E6C6D4F5A6F01FFF11FF06F02C04E5A03076EF0FFC06F02F84D90C8FC030002FFEF07 +FE7002E0EE1FFC041F02FCEEFFF00407DAFFC002075B040103FF91B51280DC003F92B648 +C9FC050F18F8050118E0DD003F94CAFC060316F8DE001F1580DF003F01F0CBFC>131 +146 116 271 156 I[146 142 121 269 166 I[129 +141 122 268 142 I[154 142 121 269 +169 72 D[67 +142 122 269 79 I[114 142 122 269 130 76 D[188 142 120 269 205 I[ +151 144 121 269 160 82 D[<0007BF12E0A61FC005E0C9FC04F8CA158004804C150003 +FCCAFC03F04D5C4802C04D5C92CBFC4A4E5C5C4A4E5C02E04E5CA24A4E5C4A95B65A91CC +FC5092C7FC5B494E5C505C5B505C505C5B505C5B505C97B65AA248484D92C8FC61644F5C +A24F5C494D5CA24F5C616496B65ACCFC4E92C9FC4E5CA24E5C60634E5CA24E5C4E5CA295 +B65AA24D92CAFC4D5CA24D5C4D5CA24D5CA24D5C4D5CA294B65A4C92CBFCA24C5CA24C5C +4C5CA24C5C4C5CA24C5CA293B65A4B92CCFCF603F04B5C5D604B5CA24B5C4B4A1707A24B +4A18E092B6FC604A92CBFCA24A5C4A5C1E0F4A5C5C5F4A4A181FA24A5C91B65A1E3F4992 +CCFCA2494AF17FC0495C1EFF495C494A6065495C65494A6090B64860654892CC5A484A96 +B5FC64484A180764484A183F484A4DB6FC1B0F484A057F158048073FB7FC92BDFCC0FCA6 +>108 142 116 269 132 90 D<93387FFF80030FB512FC92B712C0020316F8020F16FE02 +3FD980076D7EDAFFF8C780490180023F13F0D907FEC86C7FD90FF86F13FE49486F7F02C0 +6F80D93FF86F80D97FFE816E6C8390B56C6F7FA26F6F7F5A6F838587A385876C5CA26D5B +A26D5BD90FFEC9FCEB03F890CBFCA90603B6FC051FB7FC040FB8FC93B9FC030FECFC0F03 +7F14000203B512E0021F91C7FC027F13F849B512E0010714804949C8FC013F5B495B90B5 +5A485C485C485C4891C9FCA2485BA2485BF507E0485BA3B5FC5C61A461193B197B806C18 +F3806CDD01E3EC800F6EDB03C116C06C6D15076CDD0F80ECC01F6F4A489138E03F806C02 +E0023E6D9038F07F0000016E02FC92B5FC6C02FCD903F86D5C013F9027FF803FF06D5C01 +0F91B500C06D5C010393C700035CD9007F02FC6E14C0020F02F06E6C90C7FCDA003F90C9 +EA0FF8635F79DD6C>97 D[106 144 122 270 120 I<933801FFFC043FEBFFE00303B612FE031F6F7E03 +7F16E04AB5D8C00313F8020701FCC7EA3FFE4A01F0EC03FF023F01C0020013C04A49ED3F +E049B5C96C7E494916074949EE3FF84949EEFFFC49491503494D7F5D49495D90B5844B5D +5A4891C9FCA25A5C5A735B5A4A705BA248725B070013E0F23F8097C8FC5A5CA5B5FCB07E +A380A37EA36C7FA37E6EF00FC07E1B1F6C6E1880A26C6E173F1C006C6E5F6D197E6F17FE +6D6D4C5A6D6D4C5A7F6D6D4C5A6D6D4C5A6D02C04B5A6D6EED7F80023F01F84BC7FC6E6D +EC03FC0207D9FF80EB0FF8020102F8EBFFE06E6C90B65A031F93C8FC030315F8DB003F14 +C0040101F8C9FC525F79DD60>I<933803FFF8047FEBFFC00307B612FC033F15FF92B812 +C00203DA807F13F04A9026FC000F13FC021F01E001037F4A4901007F91B5C86C7F49496F +7F49496F7F49496F7F49496F7F49498349834949838590B54883488492CA14805A7413C0 +485BA2481BE04A835AA21CF05AA2865C5A1CF8A4B5FCA391BBFCA402F8CDFCAA7EA4807E +A37EA2807EA2F301F86C7F1B036C1BF06C801B076C6E18E06D190F6FEF1FC06D1A806D6D +173F6D6DEF7F006D6D17FE6D6D4C5A6D6D4C5A6D6E4B5A6E01E0ED1FE0021F01F8ED7FC0 +6E01FE4A485A0203D9FFC0D907FEC7FC020002FCEBFFFC033F90B612F0030F16C003014B +C8FCDB001F14F0040091C9FC555F7ADD62>101 D[<943801FFF0057F13FE0407B67E043F +8193B712F003039138007FF8030F01F8804B01E0497E037F495A92B5C6487F4A495B5C4A +494914804A5B4A5BA24A5BA25C5E91B56E1400A2725B4C6D5B499338007FF0F11FC096C8 +FCB3A8BAFCA7D8000102C0CAFCB3B3B3B3A6007FB812F0A7>73 144 +122 271 66 II[107 +143 121 270 120 I[46 144 121 271 60 I[47 143 121 270 60 108 DII112 D<03FFEC1FF890B691B5FCB7010314E0050F804D14FC94393FF0 +0FFE94397F003FFF05FE491380DC01F890B5FCD8003F4A484814C0010F15E06D4A484814 +E06D1580160F17005E161E5EA27214C05E72148004706E130004F06E5AF10FF84C91C8FC +A55EA65EB3B3AEB912E0A74B5D7ADC57>114 D<92263FFF80EB0380020FB500FC130702 +7F02FF131F49B7EAE03F0107EEF07F011F903AC0007FFCFFD97FFCC7000FB5FCD9FFE014 +0148496E7E4890C97E484882000F83498248488284123F4982007F187FA3193F12FF7FA2 +191F7F7F7F80806E93C7FC14F86C13FF15F0EDFF806C15FCEEFFE06C16FEEFFFC06C17F0 +6C17FC18FF6C846C18E06C84013F836D830107836D8301001880143F020717C0DA007F16 +E01507DB001F15F01600050F14F81701717E8400FC050F13FC84846C83A284A26C187FA2 +193F7FA26D18F8A27FA26D18F0197F7F6D18E019FF6D18C06D5E6E4B13806E4B130002F0 +4B5A6E4B5AD9E7FEED7FF89026C1FF8049485A018001F8011F13C026FE003FB75A48010F +4BC7FC48010315F0480100158048020701F0C8FC465F79DD55>I[67 132 124 258 84 III<007FB802 +0FB712C0A7C702FCC96C01FCC7FC70040790C8FC6EF003FC6E6D4C5A6E6E5E71150F6E4E +5A6E6E4B5A714B5A6E96C9FC6E6E5D6E6E4A5A714A5A6F4C5A6F6D5D6F6E495A72131F6F +4C5A6F6E495A6F6E91CAFC7213FE6F15016F6E485A706D485A06FF5B704A5A70149FF1FF +C0705D7092CBFC705CA2705C82717F85837180718086837180864D805F864D804D81EF7F +9FDDFF0F8005FE8104017F4C486C804C486C80DC0FF0814D7E4C486D7F043F6E7F4C4882 +4CC77E4C6E804B486E800303844B48804B486E804C834B486E80033F824B486F7F4BC981 +4A48824B7080020371804A48854A48824A487080DA7FF87080010FB585B700FC4AB812FC +A76E5C7EDB72>120 D<0007BB12FEA503F0C814FC92C84814F802F85D02E018F048494B +14E091C95A4919C04E1480495E494C1400624993B55A5F49604D5C5F49604D5C5F624D91 +C7FC001F5E495F94B55A5E614C5C5E61C9485C5E614C91C8FC5E6093B55A5D604B5C5D60 +4B5C5D604B91C9FC5D5F92B55A5C4D153F4A5C5C5F4A5C5C4D157E4A91C9FC5C5E91B55A +5B5E494A16FE5B5E495C4918015E4991C9EA03FC5B5D90B548160748190F485C4B161F48 +4A163F48197F4BED01FF484A5D48181F92C9B5FC4849031F14F8BCFCA5505C7ADB60> +122 D[<94B5FC043F14F04BB612FE03076F7E031F16E0037FD9F0017F4AB53980001FF8 +4A49C7EA03FE4A4914014A49EC007F4A496F7E4A844C151F4A717E5E91B5160787491803 +5EA287491801B263A21A03A4631A07A2631A0F963803FF80193FB792B5C8FC06035B4E13 +F84E48C9FCF01FF84E5A187FD800035F18FF615FA24D5BA55FA685A385A285A285717FF1 +FF801AFCF2FFC01BF87115FE757E7182887215F8887281A272817216807216C084060016 +E085071F15F01903F1001F080114F8F2003F87877513FC87DD07E080A287A272157FA31C +3FA4841DF8A484F47FF0A2841DE07215FF1DC0735B51138073491300B76F495A07F8495A +07FEEBFFF806F9B65A06F015C0DEC07F91C7FCDE801F13F8CAD900031380>94 +145 122 271 108 255 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fn ecbx1095 10.95 68 +/Fn 68 256 df27 DI<1407140F143E +147C14F8EB01F01303EB07E0EB0FC0EB1F80A2EB3F005B137E13FE485AA2485AA212075B +120FA25B121FA25B123FA4127F5BA512FFB0127FA57F123FA4121F7FA2120F7FA212077F +1203A26C7EA26C7E137E137F7FEB1F80A2EB0FC0EB07E0EB03F01301EB00F8147C143E14 +0F1407185A77C328>40 D<12E07E127C7E7E6C7E7F6C7E6C7E6C7EA26C7E7F137E137FEB +3F80A2EB1FC0A214E0130F14F0A2130714F8A2130314FCA414FE1301A514FFB014FEA513 +0314FCA414F81307A214F0130FA214E0131F14C0A2EB3F80A2EB7F00137E13FE5B485AA2 +485A485A485A5B48C7FC123E5A12F05A185A7AC328>I45 +DI< +1606160E161E161CA2163C163816781670A216F016E0150116C015031680A2150716005D +150EA2151E151C153C1538A21578157015F05DA214015D14035D140792C7FCA25C140E14 +1E141CA2143C143814781470A214F05C13015CA213035C130791C8FC5B130EA2131E131C +133C1338A21378137013F05BA212015B12035BA2120790C9FC5A120E121E121CA2123C12 +3812781270A212F05AA2275B7AC334>II<14 +0F5C147F495A130F48B5FCB6FCA213F7EAFE071200B3B3AA003FB612F8A4253C79BB34> +I<903803FF80013F13F890B512FE00036E7E2607F80F7F260FC00113F048486C7F48C76C +7ED87FC06D7E7F486C6D7E7FA26F1380A46C5AA2EA1FC00007C7FCC814005DA25E153F5E +4B5A5E4B5A4A5B5E4A90C7FC4A5AEC0FF84A5A5DEC3F804AC8FC14FED901F8EB0780495A +495A4948EB0F00495A013EC7FC5B495C485A90B7FC485D5A5A5A5A5AB7FC5EA3293C7BBB +34>III<000E1518D80FC014F801FC131F +90B65AA25E5E5E93C7FC15FC5D15E092C8FC14F80180C9FCA9903881FFC0018F13F801BF +13FE9039FF01FF809039F8007FE001E06D7E4980496D7E6CC7FCC87F150F82A31780A212 +0FEA3FC0487E487EA41700A25B6C48495A5B007CC75B6C143F003F5D6C6C495AD80FE049 +5A2607FC075B0001B6C7FC6C14FC013F13F0010790C8FC293D7BBB34>II<121E121F13F090B712F0A35A17E017C01780 +17005EA2485D007CC7EA01F84B5A00784A5A5E150F4B5A484AC7FC157E5DC85A14014A5A +4A5AA24A5A141F5D143FA24AC8FCA25CA2495AA21303A313075CA2130FA5131FAA6D5A6D +5A6D5A2C3F7ABD34>III<16F84B7EA24B7EA34B7EA24B7FA34B7FA24B +7FA34B7F157D03FD7F15F8A2020180EDF07F020380EDE03FA2DA07C07F82020F814B7E02 +1F811500824A81023E7F027E81147C8202FC814A7F0101825C91B7FC4982A2498202C0C7 +123F83010F834A80011F8391C8FC834983013E81017E83137C83D801FE83B500FC49B612 +F8A4453F7CBE4E>65 DI<922607FF80131C92B500F8133C020702FE137C023F9138FF80FC91B538003FE101 +0301F0EB07F74901C0EB01FF011F90C8FCD93FFC153F4948151F495A4849150F48170748 +4915035C48170191C9FC481700A2485AA2197C127FA2491700A212FFAC127FA27F193C12 +3FA36C7E197C6C1878806C18F86E16F06C6D15016CEF03E06C6DED07C06D6C150FD93FFE +ED1F806D6CED3F00010701C014FE6D01F0EB03F8010001FFEB1FF0023F90B512C0020792 +C7FC020014F8030713803E407ABE4B>IIII<922607FF +C0130E92B500F8131E020702FF133E023FEDC07E91B539801FE0FE499039F80003FB0107 +01C0EB00FF011F90C8127F4948153F4948151FD9FFF0150F481707484915034A1501485B +48170091CAFC48187EA2485AA2193E127FA24994C7FCA212FFAB0407B612FC127FA27F93 +C7383FFE00123FA36C7EA26C7FA26C7F7E806C7F6C7F6D6C157F6D7E6D6C15FF010701C0 +5B010101F85B6D9039FF801FF1023F90B5EAC07E0207ED001E020002FC1306030701C090 +C7FC46407ABE52>III75 DIII80 DII< +903A01FF8001C0011FEBF803017FEBFE0748B6128F489038007FDFD807F8EB0FFF484813 +0348487F4848EB007F163F127F49141F160F12FF1607A27FA26D1403A27F01FC91C7FC13 +FF6C13F8ECFF8015FC6CECFF806C15E016F86C816C816C816C16806C6C15C0131F010715 +E0EB007F020314F0EC001F1503030013F8167F163F12F0161FA2160FA27EA217F07E7EEE +1FE07E6DEC3FC013E06DEC7F8001FE903801FF003AFEFFE007FED8FC3FB512F8D8F80F5C +D8F003148027E0001FFCC7FC2D407ABE3A>I<003FB912F8A4903BFC007FFC007F01E016 +0FD87F80EE03FC90C71501007E1700A2007C187CA20078183CA548181EA5C81600B3B101 +1FB712F0A43F3D7CBC48>I86 DI<003FB812C0A49126C0001F138049C75A01F8160001E04A5A4914FF495D90C7485B +485C007E5E4B5B007C5C5F4B5B5D007893C7FC5D5E4B5AC75A5E4A5B5C5E4A5B5C5E4A90 +C8FCA24A5A14FF5D495B5B4BEB01E0495B5B5D495B49150392C713C05B5C494814075A5C +4849140F5A4A141F4849143F48167F4A14FF4890C75A48030F138049147FB9FCA4333E7A +BD3F>90 D<007FB912F8BA12FCA46C18F83E06776851>95 D<903807FF80013F13F048B5 +12FC3903FC03FF2607E00013C0D80FF86D7E001F6E7E7F6F7EA26F7EA26C5A6C5AEA01C0 +C8FCA3EC03FF49B5FC130F017F138F3901FFF00F00071380481300EA1FFC485A127F5B12 +FF5BA3151FA26D133F127F6D49B4FC273FFC01F713FC391FFE07E30007B5128100019038 +FE007F26001FF890C7FC2E2B7DA932>97 D<13FFB5FCA412077EB0ED7FE0913807FFFC02 +1F13FFDA7F0013C002F8EB3FF04A6D7E4A6D7E02806D7E8391C77E1880A218C082A318E0 +AA18C0A35E1880A24C13006E5C6E130F6E5CD9FDF0495AD9F8F8EB7FE0903AF07F01FFC0 +D9E01FB5C7FCD9C00713F8C813C033407DBE3A>IIIII<903A03FF8003F0013F9038F81FFC90B538FE7FFE0003903801FFFC3A07 +FC007FE1000F15E04848EB3FF0003FEDF87C49011F1300A2007F81A7003F5DA26D133F00 +1F5D6C6C495A00075D9039FF01FF80DAFFFEC7FCD80F3F13F801031380001ECAFCA2121F +A37F7F90B6FC6C15F016FC6C15FF17806C16C017E0120F271FC0000113F04848EB001F48 +C8EA0FF8160712FE1603A46C15076C16F06D140F6C6CEC1FE06C6CEC3FC0D80FF8ECFF80 +3B03FF800FFE00C690B512F8011F14C0010101FCC7FC2F3D7DA834>I<13FFB5FCA41207 +7EB0ED3FF0EDFFFE02036D7EDA0FC07F91391E007FE04A6D7E5C5C4A6D7E5CA25CA391C7 +FCB3A5B5D8FC07B512E0A4333F7CBE3A>II<13FFB5FCA412077E +B1923803FFFEA4030013804CC7FC4B5AED03F04B5AED1FC04B5A037EC8FC5DEC03F8EC07 +E04A7E4A7EEC7FFC14FF818102E77F02837F1401496C7F826F7E6F7E151F6F7E826F7F6F +7F816F7F83B5D8F807EBFFC0A4323F7DBE37>107 D<13FFB5FCA412077EB3B3B1B512FC +A4163F7CBE1D>IIII<01FFEB7FE0B53807FFFC021F13FFDA7F0113C09139F8007FF000 +07496D7E6C496D7E02806D7E8391C77E18808218C0A38218E0AA18C05EA34C1380A21800 +6E495A6E131F6E5C6E495A6EEBFFE0DA7F035B021FB5C7FC020713F8020013C092C9FCAD +B512FCA4333B7DA83A>II<3901FE +01FC00FF903807FF804A13E091383F1FF0143C00079038783FF8000313F014E013FF14C0 +ED1FF09138800FE0ED038092C7FCA291C8FCB3A4B6FCA425297DA82B>I<90381FF80E48 +B5123E000714FE380FE007381F800148C7FC007E147E007C143E12FC151EA27E7E6D90C7 +FC13E013FF6C13FCECFF806C14E06C14F86C80000380C680133F01031480EB000F020113 +C000F0EB007F153F6C141FA2150F7EA26C1580151F6C15006D5B01E0137E9038F803FC00 +FCB512F0D8F03F13C026E007FEC7FC222B7DA929>II<01FFEC07F8B5EB07FFA40007 +EC003F6C151FB3A6163FA3167F6C15FFA26E487F6C913907DFFFE090397FE01F9F90391F +FFFE1F010713F8010001E0EBE000332A7CA83A>IIIII<003FB612FC +A39039F0003FF801C0EB7FF090C712FF003E4913E016C0484913805C4A130000785C4A5A +143F4A5A5DC7485A5B495B5D4990C7FC5B4948133C5C495A137F494813785C485B5A4849 +13F891C7FC48481301001F14034848130749EB0FF04848137FB7FCA326287DA72E>I<03 +F8EB0F80DA03FEEB3FE04A6C497E4A6D487EA316C1A21680A36E496C5A6E486D5ADA00F8 +EB0F8092CCFCA5B76C90B61280A426003FFEC96CC7FC193EB3B3A5011F5FA2806D17FC61 +6D6D1401616D6D4A5A6D16076D6DEC1FC0DA7FF84A5ADA3FFE49B4C8FC913A0FFFC00FFC +020390B55A020015E0031F1480030101F8C9FC49527DD050>220 +D<017EEB07E09039FF801FF0486D487E4881ECE07F4881A46C5DECC03F6C5D6C496C5A90 +397E0007E090CAFCA6903807FF80013F13F048B512FC3903FC03FF2607E00013C0D80FF8 +6D7E001F6E7E7F6F7EA26F7EA26C5A6C5AEA01C0C8FCA3EC03FF49B5FC130F017F138F39 +01FFF00F00071380481300EA1FFC485A127F5B12FF5BA3151FA26D133F127F6D49B4FC27 +3FFC01F713FC391FFE07E30007B5128100019038FE007F26001FF890C7FC2E3F7DBD32> +228 D252 D255 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fo ecbx1200 12 58 +/Fo 58 253 df27 DI45 DI49 DII<163FA25E +5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14 +F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E +5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>I<0007150301E0143F01 +FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01 +C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0 +C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C0 +123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F +01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13FC49B6FC01079038807F80 +90390FFC001FD93FF014C04948137F4948EBFFE048495A5A1400485A120FA248486D13C0 +EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039 +F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA412 +7FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C90 +38E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D427BC038>I<121E121F13 +FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA3F00007C157E5E00785D15 +014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D143F +A2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>I65 +DIII +IIII<0107B7FCA590C7001F1300B3B3A9EA1FE0487E487EA2487EA44B5AA26C48495A49 +5C6C4813FF6C48485B260FFC0713C06CB65A6C4AC7FCC66C13F8010F138030457DC33A> +74 DIIII80 D82 DI<003FBA12E0A59026FE000FEB8003D87FE09338003FF049 +171F90C71607A2007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A201 +07B8FCA545437CC24E>III<007FB6D8C003B61280A5D8000F01E0C7D801F8C7FC6D4C5A6F14 +076D6D5D6D6D4A5A4E5A6D6D143F6E6C92C8FC6E157E705B6EEBC0016E01E05B4D5A6E6D +485A6EEBF80F6E01FC5B4D5A6E6D48C9FC6F6C5A6F137E5F6F5B815F816F7F81836F7F70 +7E93B5FC844B805D4B8004E77FDB0FC37FED1F83DB3F817F04007F037E137F4B8002016E +7F4B6D7F4A5A4A486D7F020F6E7F4B7F4A48814AC76C7F717F147E4A6F7E0101707F4A81 +49488349486F7F010F707FB600E00103B612FCA54E447DC355>88 +D<001FB812FEA59126F8000113FC028015F801FCC75A494A13F04916E0495C494A13C048 +4816805E90C84813005F003E15FF4B5B5F003C5C4B5B5F5D4B5BC85C4B90C7FC5D5E4B5A +5C5E4A5B5C5E4A5B5C5E4A90C8FC5C5D4A48140F5B5D495B5B4949141F5D49161E495B92 +C8FC49163E495A5C48177E485B4A15FE481601484914034A140748160F4849143F91C8EA +FFFC48150FB9FCA538447AC344>90 D<903801FFE0011F13FE017F6D7E48B612E03A03FE +007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC +91B6FC1307013F13F19038FFFC01000313E0481380381FFE00485A5B127F5B12FF5BA35D +A26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB80 +07D90FFCC9FC322F7DAD36>97 DIIIIIII<137C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300 +EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467CC520>I107 +DI<90277F8007FEEC0FFCB590 +263FFFC090387FFF8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D8FC0 +0FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7EA24A +5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB590383FFF +8092B512E0028114F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02F86D +7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>II<90397FC00FF8B590B57E02C314E002CF14F89139DFC03FFC91 +39FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFC +ACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07FFC02 +CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536407DAC3E>I<90387F807FB5 +3881FFE0028313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC91 +38E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E>114 D<90391FFC038090B512 +87000314FF120F381FF003383FC00049133F48C7121F127E00FE140FA215077EA27F01E0 +90C7FC13FE387FFFF014FF6C14C015F06C14FC6C800003806C15806C7E010F14C0EB003F +020313E0140000F0143FA26C141F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F0090 +38F803FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7CAD2C>IIIIIII<001FB71280A49026FC001F130001E0495A5B49495A90C7485A48495B123E4A5B4A5B +003C495BA24A90C7FC4A5A4A5AC7FC4A5A495B495BA2495B499038800780491300A2495A +4948130F49481400A2485B48495B485BA248495B4890C75A48485C15034848EB1FFEB7FC +A4292C7DAB32>I228 D252 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fp ecrm1095 10.95 94 +/Fp 94 256 df<001C1307007FEB1FC039FF803FE0A201C013F0A3007F131F001CEB0730 +00001300A500011470491360A2000314E090C712C048130100061480000E1303000C1400 +001C5B48130E485B006013181C1B7FBE1E>17 D<001C1307007FEB1FC039FF803FE0A201 +C013F0A3007F131F001CEB073000001300A500011470491360A2000314E090C712C04813 +0100061480000E1303000C1400001C5B48130E485B006013181C1B7F881E>I22 D27 +DIII<121C127FEAFF80 +A9EA7F00AC123EAC121CACC7FCA9121C127FEAFF80A5EA7F00121C094178C019>33 +D<013F1603D9FFC0ED07802601E0E0150F2607C070151F48486CED3F00D9001E157E001E +6D15FE003E02C0EB03FCDA06F0EB0FF8003CD9073F13FD007C903A030FFFF1F00300EB03 +E00078ED000700F86E5C02014A5A171F95C7FC173E177E177C5F16015F0203495A0078EC +0007007C5E4C5A003C49131F003E010691C8FC020E133E001E010C137E6C011C137C6D48 +5B3907C070012601E0E05B6CB448485A90263F0007147E90C79039C001FF80923A0F8003 +C1C0031F90380F80E09339001F0070033E011E1338037E491318037C017C131C4B150C02 +010278130E4B01F813064A5A02075CDBC0011407DA0F801503141F1500143E147E147C5C +13015C494816070107020014064A80495A011F0378130E91C8007C130C013E171C017E03 +3C1318017C6F133849031F1370000193380F80E049923803C1C049923801FF806C489238 +007E0040497BC34B>37 DI<121C127FEAFF80A213C0A3127F12 +1C1200A512011380A2120313005A1206120E120C121C5A5A12600A1B78BE19>I<143014 +7014E0EB01C0EB0380EB07005B131E5BA25B5BA2485AA2485AA212075B120FA290C7FC5A +A2121E123EA3123C127CA6127812F8B21278127CA6123C123EA3121E121FA27E7FA21207 +7F1203A26C7EA26C7EA213787FA27F7F7FEB0380EB01C0EB00E014701430145A77C323> +I<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A27FA2133E131E131FA27F1480 +A2130714C0A3130314E0A6130114F0B214E01303A614C01307A31480130FA214005BA213 +1E133E133CA25BA25BA2485A485AA2485A48C7FC120E5A5A5A5A5A145A7BC323>II<1506 +B3ABBA12E0A2C80006C9FCB3AB3B3C7BB446>I<121C127FEAFF80A213C0A3127F121C12 +00A512011380A2120313005A1206120E120C121C5A5A12600A1B788819>II<121C127FEAFF80A5EA7F00121C0909788819>I<16C0A215011680A2150316 +005D1506A2150E150CA2151C1518A215381530A21570156015E05DA214015DA2140392C7 +FCA25C1406140E140CA2141C1418A214381430A214701460A214E05C13015CA2130391C8 +FCA25B1306A2130E130CA2131C131813381330A213701360A213E05BA212015B120390C9 +FCA25A1206A2120E120CA2121C1218A21238123012701260A212E05AA2225B7BC32D>I< +EB03FC90381FFF8090383E07C09038F801F048486C7E4848137C49133C0007143E48487F +A248C7EA0F80A24815C0A4007EEC07E0A500FE15F0B3A3007E15E0A4007F140F6C15C0A4 +6C15806D131F000F1500A26C6C133EA26C6C5B6C6C5B6C6C485A90383E07C06DB45AD903 +FCC7FC243F7CBC2D>I<14C013031307131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB +7FF0B612F8A31D3D78BC2D>III<150E +A2151E153EA2157E15FEA214011403A21406140E140C141814381430146014E014C0EB01 +80130314001306130E130C5B133813305B13E05B485A120390C7FC1206120E120C5A1238 +12305A12E0B8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D807C0130F01 +F813FE90B55AA215F05D5D92C7FC38063FF890C9FCADEB01FE90380FFF8090383E03E090 +387001F8496C7ED807C0137E497F90C713800006141FC813C0A216E0150FA316F0A4123E +127F487EA490C713E048141F12E0006015C012700030EC3F8012386CEC7F00001E14FE6C +495A3907C003F83903F00FE0C6B55A013F90C7FCEB07F8243F7CBC2D>II<12301238123E003FB612FCA3 +16F85A16F016E00070C8FC0060EC01C0ED038016005D48140E150C151C5DC8123015705D +4A5A5D14034AC7FCA2140EA25CA2143C14381478A214F85C1301A31303A313075CA3130F +A5131FAA6D5A6D5A26407BBD2D>III<121C127FEAFF80A5EA7F00121CC7FCB3A3121C127FEAFF80A5EA7F00121C092778A6 +19>I<121C127FEAFF80A5EA7F00121CC7FCB3A3121C127FEAFF80A213C0A3127F121C12 +00A512011380A2120313005A1206120E120C121C5A5A12600A3978A619>I61 D<12E01278121EEA07C0EA01F0EA003C130FEB03C0EB00 +F0143EEC0F80EC01E0EC0078151EED0780ED01F0ED007C160FEE03C0EE00F0173CEF0F80 +EF03E0EF0078181EA21878EF03E0EF0F80EF3C0017F0EE03C0040FC7FC167CED01F0ED07 +80031EC8FC1578EC01E0EC0F80023EC9FC14F0EB03C0010FCAFC133CEA01F0EA07C0001E +CBFC127812E0373279AF46>I<1507A34B7EA24B7EA34B7EA34B7E156FA2EDCFF815C7A2 +91380187FC1583A291380301FEA391380600FFA2020E80020C137FA2021C800218133FA2 +4A80161FA24A80160FA24A6D7EA349486D7E91B6FC4981A291C712014981010680A24982 +177FA24982173FA2496F7EA21370717E13F0000183487ED80FFEED3FFEB500C00107B512 +F8A33D417DC044>65 DIIIIIIII<010FB512F8A3 +D900071300EC01FEB3B3A7123FEA7F80EAFFC0A44A5A1380D87F005B006C130700705C6C +495A6C495A000F495A2603C07EC7FC3800FFF8EB3FC025407DBD2E>IIIIIIIIII<003FB9FCA3D9E000EBC00190C7397F80003F007EEF1F8000 +7C170F0078170700701703A300601701A548EF00C0A5C81600B3B24B7E4A7F0107B612F8 +A33A3E7DBD41>I +III<007FB56C48B512E0A3C601FCC7383FFC00D93FF8EC +1FE06D48EC0F8095C7FC6D6C140E6D6C140C171C6D6C5C6D6C14305F6D6D13E06E6C5B4C +5A91383FE003DA1FF090C8FC160691380FF80E913807FC0C5E913803FE38913801FF305E +6E13E06F5AA26F7E6F7EA26F7E4B7EA2ED33FEED71FF156103C07F02016D7E15804A486C +7E4A6D7E14064A6D7E021C6D7E5C02306D7E02706D7E5C4A6D7F49486E7E130391C86C7E +496F7E130E011E6F7E013E8201FF82000701C0EC3FFFB500F049B512FEA33F3E7EBD44> +II<003FB712 +F0A349C7EA3FE013F001C0EC7FC090C8FC003EEDFF80003C4A1300A200384A5A00785D00 +7014074B5AA24B5A00604A5AA24B5AA24B5AC74890C7FCA24A5A5D14074A5AA24A5A4A5A +A24A5AA24A5A4990C8FCA2495A5C01071518495AA2495A495AA2495A1738495A4890C8FC +A2485A4915701207484815F0A24848140148481403160F4848143FED01FFB8FCA32D3E7B +BD37>II93 D<007FB812FCB912FEA26C17FC3704796E46>95 +D97 DI<49B4FC01 +0F13E090383F00F8017C131E484813074848131F4848EB3F804848137FA2485AA248C7EA +3F00151E4891C7FCA2127E12FEAB127FA36C15C07F001F14016D1480000F14036C6CEB07 +006C6C13066C6C131E6C6C133890383F01F090380FFFC0D901FEC7FC222A7DA828>IIII<167E903903FC01FF903A0FFF07878090393E07CE0F9038FC03FC +3901F801F83B03F000FC070049017CC7FC0007147EA248487FA86C6C137EA20003147C6D +13FC6C6C485A6D485A9038BE07C026038FFFC8FCEB03FC48CAFCA47FA27F6C7E90B512F0 +6C14FE6F7E6C6C14E048B612F83907C0001FD81F80EB03FC48C87E003E157E48153E163F +4881A56C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017FC7FC +90383FFFFC010313C0293D7EA82D>III<1470EB01FCEB03FEA5EB01FC +EB00701400AC14FE133FA313011300147EB3B3A6123C007E137CB413FCA214F8130100FE +13F0387803E0383E07C0380FFF00EA01FC175084BC1C>III<2701F803FCEB01FE00FF903B0FFF8007FFC091 +3B3C0FC01E07E0913BF003E07801F02607F9C0D9F0E07F3D03FB8001F9C000FC00010100 +5C01FFD900FF147E4992C7FCA2495CA2495CB3A6486C496C14FFB528F07FFFF83F13FCA3 +46287EA74B>I<3901F803FC00FF90380FFF8091383C0FC09138F003E02607F9C07F3A03 +FB8001F80001130001FF6D7E5BA25BA25BB3A6486C497EB539F07FFFF8A32D287EA732> +II<3901F807F800FFEB1FFF9138780FC09039F9 +E003F03A03FB8001F86CB4C77E49147E49147FEE3F8049141F17C0A2EE0FE0A317F01607 +A9EE0FE0A4EE1FC0A2EE3F806D15006D5C16FE6D495A9039FB8003F89039F9C007E09039 +F8F81F80DA3FFEC7FCEC07F091C9FCAD487EB512F0A32C3A7EA732>I<02FF130C0107EB +C01C90381F80F090387E003849EB1C3CD803F8130E4848EB077C491303484814FC001F14 +01485A150048C8FCA412FEA97E7EA36C7E15016C7E000F14037F000714076C6C130E6C6C +131CD8007E137890383F01E090380FFFC0903801FE0090C8FCAD4B7E92387FFFF8A32D3A +7DA730>I<3903F00FC000FFEB3FF0ECF0F89038F1C3FC00071383EA03F33801F70313F6 +EC01F89038FE0060491300A45BB3A4487EB512F8A31E287EA723>I<90387FC0603903FF +F8E03807C03D381E000F481303481301A20070130012F01560A27EA27EB41400EA7FC013 +FE383FFFE06C13FC00077F6CEBFF80C66C13C0010713E0EB003FEC0FF000C01303EC01F8 +14007E1578A27EA27E15F07EEC01E06C14C039F780078039F1E01F0038E0FFFC38C01FE0 +1D2A7DA824>I<1318A61338A41378A213F8A2120112031207001FB512C0B6FCA2D801F8 +C7FCB3A21560A96C6C13E015C0A2EB7E0190383F038090381F8700EB07FEEB01F81B397E +B723>I +III<3B7FFFC0 +0FFFE0A3000390390007FE00C6EC03F86D14E06D5C02805B6D6C48C7FC010F130E903807 +E00C6E5A903803F83801015B6D6C5A6E5AEC7F80143F141F6E7E81141FEC3BF0EC71F8EC +E1FCECC0FE903801807E01037FD907007F010E6D7E010C130F011C6D7E498001F86D7E00 +0181D80FFC497EB590381FFFF8A32D277FA630>II<001FB61280A29038E0007F90C7130000 +1E14FE001C495A140300185C0038495A4A5A0030131F5D4A5A4AC7FCA2C712FE495A1303 +5C495A495A131F9138C00180EB3F80EB7F00A213FE485A000314035B48481400485A001F +5C495B485A48C7123F4849B4FC90B6FCA221277EA628>I<020FEB078091393F800FE0ED +C01F027F80A3023F5CED800F91390F00078091CBFCA41507A34B7EA24B7EA34B7EA34B7E +156FA2EDCFF815C7A291380187FC1583A291380301FEA391380600FFA2020E80020C137F +A2021C800218133FA24A80161FA24A80160FA24A6D7EA349486D7E91B6FC4981A291C712 +014981010680A24982177FA24982173FA2496F7EA21370717E13F0000183487ED80FFEED +3FFEB500C00107B512F8A33D4E7DCD44>196 D<020FEB078091393F800FE0EDC01F027F +80A3023F5CED800F91390F00078091CBFCA7B600C090387FFFF8A3C601C0C7000313006D +48EC00FC18781830B3B3A4013F16706E1560A218E0011F5E6E1401130F6E4A5A01074BC7 +FC6D6C5C6D6C140E6D6C143C027F5C91393FC001F091390FF00FE00203B51280020049C8 +FCED1FF03D507DCD44>220 D<01E013703903F801FC486C487EA56C486C5A3900E00070 +90C9FCA9EB1FF0EBFFFC3803E03F390F000FC0001C6D7E001F6D7E486C6C7E6D6C7EA315 +7E6C5A6CC7FCC8FCA4EC1FFEEB03FF90381FF87EEB7F803801FC00EA07F0485A485A485A +127F90C7FC160312FEA315FEA21401007F14BE14033A3F80071F06261FC00E138E3A0FF0 +3C0FFC3A03FFF007F83A003FC003E0283C7CBA2D>228 D<01701338D801FC13FE486C48 +7EA56C486C5AD80070133890C9FCA9EB01FE90380FFFC090383F03F090387C00F8D801F0 +133E48487F4848EB0F80A24848EB07C0001F15E090C712034815F0A2007EEC01F8A400FE +15FCA9007E15F8A3007F14036C15F0A26C6CEB07E0000F15C06D130F000715806C6CEB1F +006C6C133ED800FC13FC90383F03F090380FFFC0D901FEC7FC263C7DBA2D>246 +D<010FEB078090393F800FE0ECC01F017F80A3013F5CEC800F90390F00078090CAFCAAD8 +01F814FC00FF147FA3000714030003140100011400B3A51501A3150312006D1307ED0EFE +017C497E6D4913F890381F80F0903807FFE00100903800FC002D3C7EBA32>252 +D<14FF010313C090380FC0F090383F0038017E7F017C7F01FC1306A2491307000180AA5D +1506A3157EEC01F800FFEB07804AC7FC141E1201141C143CA5143EA2143F6E7E15F015FF +6E13C06E13E06E13F0020013F8153FED01FC1500167E0230133EA3161E1438A4023C131C +163CA20003013E137800FF013F13F0ED81E0913839FFC0C738307E0027417EBF2D>255 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fq ecrm1440 14.4 28 +/Fq 28 253 df70 +D76 +D78 D82 +DI<49B4FC +010F13F090383F01FC9038F8007FD801E0EB1F8048486D7E48488048C76C7E01C06D7EEA +1FF06F7E7FA26F7EA36C5AEA03C0C9FCA4151FEC0FFFECFFF8903807FE00EB1FF0EB7FC0 +49C7FCEA03FE485A485A485AA2485A485AEF01C0A2485AA31501A315036D147E007F1407 +6C6CD90E3E138092381C3F036C6C01381400D807F89038F01F873B01FE03C00FFE3B007F +FF8007FC903A07FC0001F032367BB439>97 DIII< +EC1FF091B5FC903903F01FC090390FC007E090391F8003F890397F0001FC01FE6D7E4848 +147F485A0007ED3F805B000FED1FC05B001F16E05B003F150FA2007F16F0A25BA212FFA2 +90B7FCA20180C9FCA8127FA27FA2123F17706C7E17F0000F16E07F0007ED01C06C6C1403 +6C6C158000001507017EEC0F006D141E6D6C5BD907E013F0903901F807C09026007FFFC7 +FCEC0FF82C367DB433>II<173F913A3FC001FF80903B01FFF807 +C3C0903B07E07E0E07E090391F801F9C903A3F000FF80F017E903807F00749010314C000 +019238F8010048486D6CC7FCA2000781491300A2000F81A800075DA26D130100035DA26C +6C495A00005D017E495A017F495A496C485A2701C7E07EC8FC9038C1FFF89038803FC000 +0390CAFCA67FA27F7F7F6CB612C06C15FCEEFF806D15E0011F81017F15FCD801F8C7EA3F +FED807C014034848EC00FF48C9EA7F80003E163F007E161F007CEE0FC012FC481607A600 +7CEE0F80A26CEE1F00003F5E6C6C157E6C6C5DD803E0EC01F0D801F8EC07E0D8007EEC1F +8090271FE001FEC7FC0103B512F0D9003F90C8FC334E7DB439>I +II +107 DI110 DII114 +D<90390FFC018090387FFF833901F803E73907C000FF48C7127F001E143F003E141F003C +140F127C0078140712F8A21503A27EA27E7E6C6C90C7FC13E0EA3FFCEBFFE06C13FE6CEB +FFC06C14F00001806C6C13FE011F7F01011480D9000F13C01400ED3FE000E0141F150FED +07F07E1503A215017EA37E16E06C1403A26C15C0ED07806D130FD8F9C0EB1F00D8F0F013 +3C90387C01F839E01FFFE026C003FEC7FC24367CB42D>IIIII<267FFFFC90380FFFFEA4000101F06D13E06C6C486D90C7FC011F15 +FC17F06D6C5C6D6C5C01034A5A6E49C8FC6D7E6D6C131E6E5B6F5A91383FC07091381FE0 +F091380FE1E0EDF3C0913807FB80EC03FF6E90C9FC6E5A816F7EA24B7E4A7FEDCFF0EC03 +C791380783F891380F03FC91381E01FE15004A137F4A804A6D7E4A131F01016E7E494880 +49486D7E010F1403011F81017F6E7E01FF8100076D010713C0B56C011FEBFF80A439337F +B23C>I<001FB712C0A201FCC7127F01E015800180ECFF0090C7485A1503001E5D4B5A00 +1C140F003C5D4B5A4B5A0038147F5E4BC7FC5C5D4A5AC7485A140F5D4A5A143F5D4A5A4A +C8FC5B5C495A0107EC01C05C495A495A133F4AEB0380495A13FF91C7FC485A4848140712 +075B4848140F001F151F49143F4848EC7F004848495A00FF140F90B7FCA22A337DB233> +122 D252 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fr ecxc1728 17.28 3 +/Fr 3 83 df66 D68 D82 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fs eccc2074 20.74 11 +/Fs 11 85 df65 DI68 DI73 +D76 DI79 DI82 +D<001FBE12FCA402FCC7000301F0C7120F02806E4914004848C949ED3FFE01F81B0F01E0 +1B03491B01491B0090CA187EA2003E1D3EA2003C1D1EA300381D0E00781D0FA4007089A8 +48F50380A6CB95C7FCB3B3B3B34D7FA24D7F053F13FF0303B812F0A4697679F578>84 +D E +%EndDVIPSBitmapFont +end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%BeginPaperSize: a4 +a4 +%%EndPaperSize + +%%EndSetup +%%Page: 1 1 +1 0 bop 1202 566 a Fs(DIPLOMARBEIT)1633 961 y Fr(DRBD)936 +1286 y Fq(F)-9 b(estplattenspiegelung)36 b(\374b)s(ers)i(Netzw)m(erk) +1805 1399 y(f\374r)577 1549 y(die)f(Realisierung)f(ho)s(c)m(h)m(v)m +(erf\374gbarer)i(Serv)m(er)f(un)m(ter)i(Lin)m(ux)972 +2200 y Fp(ausgef\374hrt)31 b(am)f(Institut)h(f\374r)f(Computersprac)m +(hen)774 2313 y(Abteilung)h(f\374r)g(Programmiersprac)m(hen)j(und)d +(\334b)s(ersetzerbau)1207 2426 y(der)f(T)-8 b(ec)m(hnisc)m(hen)34 +b(Univ)m(ersit\344t)d(Wien)1477 2751 y(un)m(ter)h(Anleitung)f(v)m(on) +1022 2864 y(o.)41 b(Prof.)g(Dipl.-Ing.)g(Dr.)f(Manfred)31 +b(Bro)s(c)m(khaus)1801 2977 y(und)1141 3090 y(Univ.-Ass.)39 +b(Dipl.-Ing.)i(Dr.)g(An)m(ton)31 b(Ertl)779 3203 y(als)f(v)m(eran)m(t)m +(w)m(ortlic)m(h)k(mit)m(wirk)m(enden)f(Univ)m(ersit\344tsassisten)m +(ten)1765 4179 y(durc)m(h)1495 4504 y Fo(Philipp)i(Reisner)1542 +4617 y Fp(Diehlgasse)c(33/21)1667 4730 y(1050)g(Wien)382 +5376 y(Wien,)g(am)f(18.)h(Mai)f(2000)p eop +%%Page: 2 2 +2 1 bop 1596 539 a Fn(Kurzfassung)382 751 y Fp(Diese)44 +b(Arb)s(eit)f(zeigt,)48 b(da\377)c(Ho)s(c)m(h)m(v)m(erf\374gbark)m +(eits-Cluster)j(auc)m(h)e(ohne)f(teure)h(Sha-)382 864 +y(red)37 b(Devices)g(implemen)m(tiert)j(w)m(erden)e(k)m(\366nnen.)62 +b(Es)37 b(w)m(erden)i(das)d(Design)i(und)f(die)382 977 +y(Implemen)m(tierung)e(eines)e(Ger\344tetreib)s(ers)h(\(=DRBD\))f +(f\374r)f(Lin)m(ux)i(gezeigt,)h(der)e(das)382 1090 y(Spiegeln)j(v)m(on) +f(F)-8 b(estplatten)37 b(\374b)s(er)e(das)f(Netzw)m(erk)i(erlaubt.)55 +b(Um)35 b(so)m(w)m(ohl)h(gute)g(Lei-)382 1203 y(stung)c(als)h(auc)m(h)g +(Un)m(terst\374tzung)h(f\374r)e(Journaling-Filesysteme)j(bieten)e(zu)f +(k)m(\366nnen,)382 1316 y(wurde)j(ein)f(Algorithm)m(us)i(en)m(t)m(wic)m +(k)m(elt,)i(der)c(dem)h(Disk-Sc)m(heduler)h(b)s(eim)e(Sc)m(hreib)s(en) +382 1429 y(die)23 b(gr\366\377tm\366glic)m(he)i(F)-8 +b(reiheit)24 b(einr\344um)m(t,)j(Bl\366)s(c)m(k)m(e)c(umzuordnen,)j +(dab)s(ei)d(ab)s(er)g(die)g(Rei-)382 1542 y(henfolge,)31 +b(die)g(das)f(Filesystem)g(v)m(orgibt,)i(nic)m(h)m(t)g(v)m(erletzt.)382 +1704 y(Das)g(Ger\344t)h(erreic)m(h)m(t)i(zwisc)m(hen)e(50)g(\045)g(und) +g(98)g(\045)f(der)h(theoretisc)m(h)h(m\366glic)m(hen)h(Lei-)382 +1817 y(stung.)76 b(W)-8 b(eiters)43 b(geb)s(e)f(ic)m(h)h(einen)g(\334b) +s(erblic)m(k)g(dar\374b)s(er,)j(wie)d(sic)m(h)f(DRBD)g(in)g(die)382 +1930 y(anderen)31 b(Clustering-K)m(omp)s(onen)m(ten)k(un)m(ter)c(Lin)m +(ux)h(eingliedert.)1678 4098 y Fn(Abstract)382 4310 y +Fp(This)37 b(w)m(ork)h(sho)m(ws)g(that)f(it)h(is)f(p)s(ossible)g(to)g +(implemen)m(t)i(high-a)m(v)-5 b(ailabilit)m(y)40 b(clusters)382 +4423 y(without)c(exp)s(ensiv)m(e)e(shared)h(devices.)54 +b(A)34 b(description)i(of)e(the)h(design)g(and)g(the)g(im-)382 +4536 y(plemen)m(tation)c(of)d(a)h(device)f(driv)m(er)i(for)e(Lin)m(ux)i +(is)e(pro)m(vided,)i(whic)m(h)g(allo)m(ws)f(harddisk)382 +4649 y(mirroring)d(via)f(the)g(net)m(w)m(ork.)41 b(In)24 +b(order)i(to)f(b)s(e)f(able)i(to)f(o\033er)g(go)s(o)s(d)f(p)s +(erformance)i(and)382 4762 y(supp)s(ort)37 b(for)f(journaling)h +(\034lesystems)g(an)f(algorithm)i(w)m(as)f(dev)m(elop)s(ed)h(whic)m(h)f +(giv)m(es)382 4875 y(the)k(disk)f(sc)m(heduler)i(maxim)m(um)h(freedom)e +(during)h(the)f(write)g(pro)s(cess)g(to)f(reorder)382 +4988 y(blo)s(c)m(ks)30 b(without)i(compromising)g(the)e(order)h(imp)s +(osed)g(b)m(y)f(the)h(\034lesystem.)382 5150 y(The)42 +b(device)h(reac)m(hes)g(b)s(et)m(w)m(een)h(50)e(\045)g(and)h(98)f(\045) +g(of)g(the)g(maxim)m(um)i(theoretical)382 5263 y(p)s(erformance.)c +(Apart)29 b(from)e(that,)i(this)f(w)m(ork)h(giv)m(es)e(an)h(o)m(v)m +(erview)i(of)d(ho)m(w)i(DRBD)e(is)382 5376 y(in)m(tegrated)32 +b(in)m(to)g(the)e(other)h(clustering)h(compnen)m(ts)g(under)f(Lin)m +(ux.)p eop +%%Page: 1 3 +1 2 bop 382 1244 a Fm(Inhaltsv)-6 b(erzeic)g(hnis)382 +1821 y Fn(1)83 b(Einleitung)2334 b(4)382 2065 y(2)83 +b(Clustering)2330 b(6)517 2220 y Fp(2.1)93 b(Wissensc)m(haftlic)m(he)32 +b(Cluster)85 b(.)46 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)143 b(7)517 2374 y(2.2)93 +b(Lastv)m(erteilung)106 b(.)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)143 +b(7)725 2528 y(2.2.1)105 b(hohe)31 b(CPU-Last)48 b(.)e(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)143 +b(7)725 2682 y(2.2.2)105 b(hohe)31 b(Netzw)m(erk-Last)86 +b(.)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)143 b(7)517 2836 y(2.3)93 b(Hohe)31 b(V)-8 b(erf\374gbark)m +(eit)112 b(.)46 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)143 b(8)725 2990 y(2.3.1)105 +b(V)-8 b(erf\374gbark)m(eit)56 b(.)46 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)143 +b(9)725 3145 y(2.3.2)105 b(HA-Cluster)67 b(.)45 b(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +98 b(11)725 3299 y(2.3.3)105 b(Beispielk)m(on\034guration)47 +b(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)98 b(12)382 3543 y Fn(3)83 b(DRBD)34 b(Design)2097 +b(16)517 3698 y Fp(3.1)93 b(DRBD)30 b(im)h(Kernel)48 +b(.)e(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(17)725 3852 y(3.1.1)105 +b(Seman)m(tik)m(en)67 b(.)45 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(18)725 4006 y(3.1.2)105 b(Single)31 b(P)m(oin)m(ts)h(of)e(F)-8 +b(ailure)24 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)98 b(20)517 4160 y(3.2)93 b(Die)31 b(Protok)m(olle)g(.) +46 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(21)725 4314 +y(3.2.1)105 b(Protok)m(oll)32 b(A)58 b(.)45 b(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(22)725 4469 y(3.2.2)105 b(Protok)m(oll)32 b(B)62 b(.)45 +b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)98 b(22)725 4623 y(3.2.3)105 b(Protok)m(oll)32 +b(C)61 b(.)45 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(23)517 4777 y(3.3)93 +b(Sc)m(hreib)s(op)s(erationen)56 b(.)45 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(23)725 4931 y(3.3.1)105 b(Abh\344ngigk)m(eiten)47 b(.)f(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +98 b(24)517 5085 y(3.4)93 b(Sync)m(hronisation)42 b(.)j(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)98 b(26)725 5240 y(3.4.1)105 b(Sc)m(hnelle)32 +b(Sync)m(hronisation)38 b(.)45 b(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)98 b(26)725 5394 y(3.4.2)105 +b(Datensic)m(herheit)48 b(.)e(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(27)1854 +5622 y(1)p eop +%%Page: 2 4 +2 3 bop 382 262 a Fl(INHAL)-8 b(TSVERZEICHNIS)931 b(INHAL)-8 +b(TSVERZEICHNIS)p 382 299 2989 4 v 382 539 a Fn(4)83 +b(Lin)m(ux)2491 b(28)517 700 y Fp(4.1)93 b(GPL)56 b(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(28)517 861 y(4.2)93 b(Ger\344tetreib)s(er)68 b(.)46 +b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(28)725 1022 y(4.2.1)105 +b(Zeic)m(henorien)m(tierte)34 b(T)-8 b(reib)s(er)65 b(.)46 +b(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(29)725 1183 y(4.2.2)105 b(Blo)s(c)m(k)m(orien)m(tierte)33 +b(Ger\344te)93 b(.)45 b(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)98 b(31)517 1345 y(4.3)93 b(P)m(arallelausf\374hrung)72 +b(.)45 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(34)725 1506 y(4.3.1)105 +b(Ausf\374hrungsk)m(on)m(texte)39 b(.)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(35)725 +1667 y(4.3.2)105 b(Sync)m(hronisationsprimitiv)m(e)66 +b(.)46 b(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(36)517 1828 y(4.4)93 b(Threads)64 b(.)46 b(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)98 b(38)725 1989 y(4.4.1)105 b(Kernel-Threads)49 +b(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)98 b(38)517 2150 y(4.5)93 b(Mo)s(dule)c(.)46 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(39)382 +2402 y Fn(5)83 b(Implemen)m(tierung)1974 b(40)517 2563 +y Fp(5.1)93 b(Struktur)47 b(.)f(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)98 b(40)517 2724 y(5.2)93 b(Kernel-Mo)s(dul)51 b(.)46 +b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(41)725 2886 y(5.2.1)105 +b(Bu\033er-Cac)m(he)80 b(.)46 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(41)725 +3047 y(5.2.2)105 b(Threads)57 b(.)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(43)725 3208 y(5.2.3)105 b(Datenstrukturen)78 b(.)45 +b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)98 b(45)725 3369 y(5.2.4)105 b(Protok)m(oll)87 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(47)517 3530 y(5.3)93 +b(Drb)s(dsetup)38 b(.)46 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(52)725 3691 y(5.3.1)105 b(K)m(on\034guration)47 b(.)f(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +98 b(52)725 3853 y(5.3.2)105 b(Steuerung)32 b(im)e(Betrieb)c(.)45 +b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)98 b(54)517 4014 y(5.4)93 b(P)m(erformance)36 b(.)45 +b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(55)725 4175 +y(5.4.1)105 b(Durc)m(hsatz)51 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(55)725 4336 y(5.4.2)105 b(Dateisystem)35 b(.)45 b(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +98 b(59)382 4588 y Fn(6)83 b(HA)36 b(un)m(ter)e(Lin)m(ux)2019 +b(62)517 4749 y Fp(6.1)93 b(Cluster)31 b(Managemen)m(t)57 +b(.)46 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)98 b(62)725 4910 y(6.1.1)105 +b(Struktur)40 b(.)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(62)725 5071 y(6.1.2)105 b(Cluster-Managemen)m(t-Soft)m(w)m(are)37 +b(.)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(65)517 5233 y(6.2)93 b(Filesysteme)68 b(.)45 b(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)98 b(69)725 5394 y(6.2.1)105 b(ext2)69 +b(.)45 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(69)1854 +5622 y(2)p eop +%%Page: 3 5 +3 4 bop 382 262 a Fl(INHAL)-8 b(TSVERZEICHNIS)931 b(INHAL)-8 +b(TSVERZEICHNIS)p 382 299 2989 4 v 725 539 a Fp(6.2.2)105 +b(ext3)69 b(.)45 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(70)725 701 y(6.2.3)105 b(ReiserFS)26 b(.)45 b(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)98 b(70)725 864 y(6.2.4)105 b(XFS)60 b(.)45 b(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)98 b(71)725 1027 y(6.2.5)105 b(JFS)82 +b(.)45 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(71)725 +1189 y(6.2.6)105 b(LinLogFS)62 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(72)725 1352 y(6.2.7)105 b(GFS)57 b(.)45 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)98 b(72)517 1515 y(6.3)93 b(Implemen)m(tierung)73 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 b(73)725 1678 y(6.3.1)105 +b(Struktur)40 b(.)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)98 +b(73)725 1840 y(6.3.2)105 b(Ergebnisse)30 b(.)46 b(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)98 b(74)725 2003 y(6.3.3)105 b(Heartb)s(eat)31 b(Erw)m(eiterungen) +88 b(.)46 b(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +98 b(75)382 2256 y Fn(7)83 b(Zusammenfassung)1927 b(79)382 +2509 y(A)57 b(Me\377ergebnisse)2089 b(81)382 2762 y(Literaturv)m +(erzeic)m(hnis)1980 b(85)1854 5622 y Fp(3)p eop +%%Page: 4 6 +4 5 bop 382 1202 a Fk(Kapitel)62 b(1)382 1657 y Fm(Einleitung)382 +2143 y Fp(Unsere)29 b(Gesellsc)m(haft)h(ist)f(auf)g(dem)h(W)-8 +b(eg)30 b(in)f(das)g(Informationszeitalter.)42 b(Eines)30 +b(der)382 2256 y(vielen)41 b(Anzeic)m(hen)i(daf\374r)e(ist)f(das)h +(enorme)h(W)-8 b(ac)m(hstum)42 b(des)f(In)m(ternets,)k(das)40 +b(\374b)s(er)382 2369 y(100)e(\045)f(im)h(Jahr)g(liegt.)62 +b(Dies)37 b(stellt)h(sogar)f(die)h(enorm)g(hohen)g(W)-8 +b(ac)m(hstumszahlen)382 2482 y(der)31 b(gesam)m(ten)g(ED)m(V-Branc)m +(he)i(in)d(den)h(Sc)m(hatten.)382 2635 y(In)23 b(den)h(v)m(ergangenen)h +(Jahrzehn)m(ten)h(dien)m(te)f(das)f(In)m(ternet)g(haupts\344c)m(hlic)m +(h)i(dem)e(\(ak)-5 b(a-)382 2748 y(demisc)m(hen\))33 +b(Informationsaustausc)m(h.)43 b(Durc)m(h)32 b(die)g(rasan)m(te)g(En)m +(t)m(wic)m(klung)i(hat)d(sic)m(h)382 2861 y(das)g(Netz)h(auc)m(h)g(in)g +(Ric)m(h)m(tung)h(k)m(ommerzieller)g(An)m(w)m(endung)h(ge\366\033net,)e +(w)m(ahrsc)m(hein-)382 2974 y(lic)m(h)25 b(ist)e(ab)s(er)h(auc)m(h)h +(die)f(K)m(ommerzialisierung)j(ein)d(Grund)g(f\374r)g(das)f(hohe)i(W)-8 +b(ac)m(hstum.)382 3087 y(Zu)20 b(den)h(p)s(opul\344rsten)g(k)m +(ommerziellen)i(An)m(w)m(endungen)g(geh\366ren)e(heute)g(Online-Shops) +382 3199 y(und)31 b(T)-8 b(elebanking.)382 3353 y(Do)s(c)m(h)40 +b(wir)h(sind)f(no)s(c)m(h)g(nic)m(h)m(t)i(abh\344ngig)f(v)m(on)g(k)m +(ommerziellen)h(An)m(w)m(endungen,)j(die)382 3466 y(\374b)s(er)39 +b(das)g(In)m(ternet)h(angeb)s(oten)h(w)m(erden,)i(wie)c(wir)h(v)m(on)f +(anderen)h(Errungensc)m(haf-)382 3579 y(ten)33 b(des)f(F)-8 +b(ortsc)m(hritts)34 b(abh\344ngig)g(sind.)47 b(Nac)m(h)33 +b(ein)f(paar)h(T)-8 b(agen)34 b(ohne)f(Autobahnen)382 +3692 y(w\374rde)40 b(z.B.)g(die)f(\366\033en)m(tlic)m(he)i(V)-8 +b(ersorgung)41 b(zusammen)m(brec)m(hen,)k(w)m(\344hrend)c(ein)f(T)-8 +b(o-)382 3804 y(talausfall)44 b(des)g(In)m(ternets)h(v)m(on)f(einem)h +(gro\377en)g(T)-8 b(eil)45 b(der)f(Bev)m(\366lk)m(erung)i(gar)e(nic)m +(h)m(t)382 3917 y(w)m(ahrgenommen)33 b(w)m(erden)f(w\374rde.)382 +4071 y(Do)s(c)m(h)26 b(wie)h(die)g(Gesc)m(hic)m(h)m(te)h(zeigt,)g(w)m +(erden)f(die)g(neuen)g(tec)m(hnisc)m(hen)h(Errungensc)m(haf-)382 +4184 y(ten)k(allm\344hlic)m(h)i(in)e(das)g(t\344glic)m(he)i(Leb)s(en)e +(in)m(tegriert,)j(und)d(wir)g(w)m(erden)i(zunehmend)382 +4297 y(v)m(on)h(ihnen)g(abh\344ngig.)54 b(Es)34 b(ist)g(sic)m(her)i(n)m +(ur)f(eine)g(F)-8 b(rage)35 b(der)g(Zeit,)h(bis)e(sic)m(h)h(die)g(Ab-) +382 4409 y(h\344ngigk)m(eit)k(v)m(on)f(funktionierenden)h +(Informationssystemen,)g(wie)f(sie)f(sc)m(hon)h(jetzt)382 +4522 y(in)e(kleinen)h(T)-8 b(eilb)s(ereic)m(hen)39 b(existiert,)e(auc)m +(h)h(auf)e(einen)g(Gro\377teil)h(der)g(Bev)m(\366lk)m(erung)382 +4635 y(ausdehn)m(t.)382 4789 y(V)-8 b(or)43 b(allem)g(das)f(Finanz-)h +(und)g(V)-8 b(ersic)m(herungsw)m(esen)45 b(so)m(wie)e(viele)f +(isolierte)i(Ec)m(h)m(t-)382 4902 y(zeitsteuerungssysteme)36 +b(sind)e(f\374r)h(uns)g(v)m(on)g(so)f(gro\377er)i(Wic)m(h)m(tigk)m +(eit,)i(da\377)d(wir)g(ihre)382 5015 y(fortlaufende)24 +b(F)-8 b(unktion)24 b(un)m(ter)g(allen)f(Umst\344nden)h(sic)m +(herstellen)g(m)m(\374ssen.)38 b(F\374r)23 b(diese)382 +5127 y(Bereic)m(he)32 b(gibt)f(es)f(b)s(ereits)g(en)m(tsprec)m(hende)j +(L\366sungen.)382 5281 y(Erh\366h)m(t)22 b(sic)m(h)f(jedo)s(c)m(h)f +(die)h(Abh\344ngigk)m(eit)h(der)f(Gesellsc)m(haft)f(v)m(on)h(Online-An) +m(w)m(endungen)382 5394 y(w)m(eiter,)40 b(so)c(m)m(u\377)i(hier)f(no)s +(c)m(h)h(an)e(deutlic)m(hen)j(V)-8 b(erb)s(esserungen)38 +b(gearb)s(eitet)g(w)m(erden,)1854 5622 y(4)p eop +%%Page: 5 7 +5 6 bop 382 262 a Fl(KAPITEL)31 b(1.)71 b(EINLEITUNG)p +382 299 2989 4 v 382 539 a Fp(denn)21 b(heute)g(ist)g(es)f(nic)m(h)m +(ts)i(Un)m(\374blic)m(hes,)i(w)m(enn)e(In)m(ternetan)m(w)m(endungen)j +(wie)c(das)f(Elek-)382 652 y(tronisc)m(he)25 b(T)-8 b(elefon)m(buc)m(h) +27 b(\(www.etb.at\),)h(T)-8 b(elebanking)26 b(o)s(der)e(der)g(Wiener)h +(Stadtplan)382 764 y(f\374r)30 b(mehrere)i(Stunden)f(o)s(der)g(T)-8 +b(age)31 b(einfac)m(h)g(nic)m(h)m(t)h(funktionieren.)382 +927 y(Auc)m(h)41 b(in)g(Klein-)h(und)f(Mittelb)s(etrieb)s(en,)j(w)m(o)e +(v)m(or)f(allem)g(auf)g(PC)g(basierte)h(ED)m(V-)382 1040 +y(L\366sungen)32 b(gesetzt)f(wird,)h(k)-5 b(ann)31 b(der)g(Ausfall)g +(des)g(ED)m(V-Systems)g(gra)m(vierende)i(F)-8 b(ol-)382 +1153 y(gen)35 b(f\374r)g(das)g(Un)m(ternehmen)i(hab)s(en.)55 +b(So)m(w)m(ohl)37 b(der)e(Ausfall)g(der)g(Pro)s(duktivit\344t)h(im)382 +1266 y(Zeitraum)j(des)f(ED)m(V-Ausfalls)h(als)f(auc)m(h)h +(Regre\377sanspr\374c)m(he)h(der)e(Kunden,)j(w)m(enn)382 +1379 y(w)m(egen)24 b(eines)f(ED)m(V-Ausfalls)g(v)m(erein)m(barte)i +(Leistungen)f(nic)m(h)m(t)h(erbrac)m(h)m(t)g(w)m(erden)f(k)m(\366n-)382 +1492 y(nen,)31 b(k)m(\366nnen)g(f\374r)f(das)g(Un)m(ternehmen)j +(existenzb)s(edrohend)f(w)m(erden.)382 1654 y(Es)24 b(w)m(erden)j +(Systeme)d(b)s(en\366tigt,)j(die)e(garan)m(tiert)i(zur)e(V)-8 +b(erf\374gung)25 b(stehen.)39 b(Im)25 b(Un)m(ter-)382 +1767 y(sc)m(hied)35 b(zu)f(Ec)m(h)m(tzeitan)m(w)m(endungen)40 +b(d\374rfen)34 b(kurze)g(Un)m(terbrec)m(h)m(ungen)k(\(im)c(Bereic)m(h) +382 1880 y(v)m(on)21 b(Min)m(uten\))i(auftreten,)h(w)m(enn)e(dadurc)m +(h)h(die)e(K)m(osten)h(des)f(Systems)g(in)g(den)g(Bereic)m(h)382 +1993 y(herk)m(\366mmlic)m(her)38 b(Systeme)e(gebrac)m(h)m(t)i(w)m +(erden)g(k)m(\366nnen.)58 b(Es)35 b(m)m(\374ssen)i(also)e(Systeme)382 +2106 y(gebaut)40 b(w)m(erden,)i(die)e(den)f(Ausfall)f(einzelner)i(K)m +(omp)s(onen)m(ten)i(tolerieren)e(k)m(\366nnen.)382 2219 +y(Diese)35 b(Systeme)h(m)m(\374ssen)g(aus)f(herk)m(\366mmlic)m(hen)j +(Computern)f(b)s(estehen,)g(da)f(n)m(ur)g(so)382 2332 +y(die)31 b(K)m(osten)g(gering)g(gehalten)h(w)m(erden)g(k)m(\366nnen.) +382 2495 y(Diese)26 b(Arb)s(eit)g(gibt)h(zuerst)f(einen)h(\334b)s +(erblic)m(k)f(\374b)s(er)h(existierende)g(L\366sungen,)h(die)e(v)m(or) +382 2608 y(allem)40 b(mit)g(Hilfe)f(sp)s(ezieller)h(Hardw)m(are)h(arb)s +(eiten;)k(ansc)m(hlie\377end)d(wird)e(eine)g(neue)382 +2720 y(L\366sung)31 b(v)m(orgestellt,)h(die)e(ohne)h(sp)s(ezielle)g +(Hardw)m(are)h(ausk)m(omm)m(t.)382 2883 y(In)e Fn(Kapitel)35 +b(2)c Fp(wird)f(der)h(Begri\033)37 b Fn(Clustering)31 +b Fp(erl\344utert;)h(der)f(Sc)m(h)m(w)m(erpunkt)i(liegt)382 +2996 y(b)s(ei)d(existierenden)i(Clusterl\366sungen,)g(die)e(hohe)h(V)-8 +b(erf\374gbark)m(eit)32 b(bieten.)382 3159 y(In)k Fn(Kapitel)43 +b(3)37 b Fp(wird)g(das)g Fn(Design)42 b(v)m(on)f(DRBD)35 +b Fp(\026)i(die)h(zen)m(trale)g(K)m(omp)s(onen)m(te)382 +3272 y(des)31 b(Ho)s(c)m(h)m(v)m(erf\374gbark)m(eits-Clusters,)j(der)d +(ohne)h(sp)s(ezielle)f(Hardw)m(are)i(ausk)m(omm)m(t)f(\026)382 +3385 y(v)m(orgestellt.)382 3547 y(In)k Fn(Kapitel)42 +b(4)37 b Fp(w)m(erden)g(f\374r)g(die)f(Implemen)m(tierung)j(v)m(on)e +(DRBD)f(relev)-5 b(an)m(te)37 b Fn(T)-9 b(eile)382 3660 +y(des)35 b(Lin)m(ux)f(Kernels)c Fp(v)m(orgestellt.)382 +3823 y Fn(Kapitel)37 b(5)30 b Fp(b)s(ehandelt)j(die)e +Fn(Implemen)m(tierung)k(und)f(erzielte)j(Leistung)f(v)m(on)382 +3936 y(DRBD)p Fp(.)382 4099 y(In)20 b Fn(Kapitel)25 b(6)c +Fp(wird)g(gezeigt,)j(wie)e(mit)f(dem)g(DRBD-Ger\344t)g(und)h(anderer)g +(frei)f(erh\344lt-)382 4211 y(lic)m(her)32 b(Soft)m(w)m(are)h(ein)e +Fn(Ho)s(c)m(h)m(v)m(erf\374gbark)m(eits-Cluster)k(implemen)m(tiert)c +Fp(w)m(erden)382 4324 y(k)-5 b(ann.)1854 5622 y(5)p eop +%%Page: 6 8 +6 7 bop 382 1208 a Fk(Kapitel)62 b(2)382 1669 y Fm(Clustering)382 +2160 y Fp(Wie)46 b(b)s(ereits)g(erw)m(\344hn)m(t)j(k)m(\366nnen,)i +(preisw)m(erte,)h(ho)s(c)m(h)m(v)m(erf\374gbare)d(Systeme)e(gebaut)382 +2273 y(w)m(erden,)41 b(indem)d(mehrere)h(herk)m(\366mmlic)m(he)h +(Computer)g(zu)d(einem)i(Cluster)f(zusam-)382 2386 y(mengesc)m(hlossen) +32 b(w)m(erden.)45 b(Da)31 b(der)g(Begri\033)g(Clustering)i(ab)s(er)e +(mehr)h(b)s(einhaltet)g(als)382 2499 y(Systeme)44 b(f\374r)f(hohe)i(V) +-8 b(erf\374gbark)m(eit,)49 b(geb)s(e)43 b(ic)m(h)i(in)f(diesem)g +(Kapitel)h(zuerst)f(einen)382 2612 y(\334b)s(erblic)m(k)c(\374b)s(er)f +(v)m(ersc)m(hiedene)j(Cluster)e(und)f(gehe)h(danac)m(h)h(sp)s(eziell)f +(auf)f(Cluster)382 2725 y(f\374r)30 b(hohe)h(V)-8 b(erf\374gbark)m(eit) +32 b(ein.)382 2884 y(Un)m(ter)d(einem)g(Cluster)g(v)m(ersteh)m(t)g(man) +g(den)g(Zusammensc)m(hlu\377)h(mehrerer)g(unabh\344n-)382 +2997 y(giger)35 b(Computer,)i(um)d(eine)h(Aufgab)s(e)f(zu)g(l\366sen.) +53 b(Ein)34 b(Cluster)h(un)m(tersc)m(heidet)i(sic)m(h)382 +3110 y(dadurc)m(h)29 b(v)m(on)f(einem)g(Netzw)m(erk)h(v)m(on)f +(Computern,)i(das)d(eine)h(v)m(erteilte)h(Applik)-5 b(ation)382 +3223 y(ausf\374hrt,)31 b(da\377)f(er)h(in)f(einem)h(b)s(estimm)m(ten)h +(Asp)s(ekt)d(den)i(Eindruc)m(k)h(erw)m(ec)m(kt,)g(da\377)f(es)382 +3335 y(sic)m(h)g(um)f(einen)h(einzigen,)h(herk)m(\366mmlic)m(hen)h +(Computer)f(handelt.)382 3495 y(Der)d(\022p)s(erfekte)f(Cluster\021)37 +b(w)m(\344re)30 b(ein)f(System,)g(das)g(sic)m(h)g(in)f(allen)i(Asp)s +(ekten,)e(wie)h(z.B.)382 3608 y(A)m(dministration,)40 +b(Programmiermo)s(dell,)g(Repr\344sen)m(tation)e(im)f(Netzw)m(erk,)i +(wie)d(ein)382 3720 y(einzelner)f(Computer)h(v)m(erh\344lt,)g(ab)s(er)e +(mit)g(dem)h(Hinzuf\374gen)g(zus\344tzlic)m(her)g(Knoten)382 +3833 y(seine)25 b(Leistung)g(und)g(Ausfallsic)m(herheit)h(steigern)f(k) +-5 b(ann.)39 b(Die)25 b(Sic)m(h)m(tbark)m(eit)i(des)e(Clu-)382 +3946 y(sters)30 b(als)g(eine)h(Einheit)g(wird)g(als)g(SSI)f(\(single)h +(system)e(image\))j(b)s(ezeic)m(hnet.)42 b([P\03498)q(])382 +4105 y(Die)35 b(meisten)g(der)g(heutigen)h(Clustering-Ans\344tze)g +(setzen)f(sic)m(h)g(ein)g(w)m(esen)m(tlic)m(h)j(b)s(e-)382 +4218 y(sc)m(heideneres)e(Ziel.)56 b(Sie)35 b(v)m(ersuc)m(hen,)j(das)d +(SSI)g(f\374r)g(einen)h(b)s(estimm)m(ten)g(Zw)m(ec)m(k)h(auf-)382 +4331 y(rec)m(h)m(tzuerhalten.)44 b(V)-8 b(erl\344\377t)31 +b(man)g(b)s(ei)f(einer)h(Betrac)m(h)m(tung)i(solc)m(h)e(eines)g +(Clusters)f(die)382 4444 y(Grenzen)37 b(des)e(SSI,)h(so)g(wird)g(die)g +(T)-8 b(atsac)m(he,)40 b(da\377)c(es)f(sic)m(h)i(um)f(mehrere)h +(Computer)382 4557 y(handelt,)31 b(wieder)h(sic)m(h)m(tbar.)382 +4716 y(Ein)h(F)-8 b(aktor,)33 b(der)g(viele)f(k)m(ommerzielle)i +(Hersteller)f(v)m(on)f(ED)m(V-Infrastruktur)h(da)m(v)m(on)382 +4829 y(abgehalten)23 b(hat,)h(fortsc)m(hrittlic)m(he)h(Clustering-T)-8 +b(ec)m(hnologien)26 b(zu)c(en)m(t)m(wic)m(k)m(eln,)27 +b(ist)21 b(ih-)382 4942 y(re)33 b(eigene)g(Linzenzp)s(olitik.)50 +b(Wird)33 b(Soft)m(w)m(are)h(f\374r)f(mehrere)h(Computer,)g(auc)m(h)g +(w)m(enn)382 5055 y(es)j(sic)m(h)h(um)g(Knoten)h(eines)e(Clusters)h +(handelt,)j(v)m(erk)-5 b(auft,)39 b(so)e(ist)h(f\374r)f(jeden)h(Com-) +382 5168 y(puter)i(eine)f(Lizenz)h(zu)f(erw)m(erb)s(en.)68 +b(Das)39 b(ist)f(ein)i(Grund,)h(w)m(eshalb)f(viele)f(Kunden)382 +5281 y(SMP-Computersysteme)30 b(v)m(orziehen,)g(da)e(hier)h(n)m(ur)g +(Lizenzen)g(f\374r)f(einen)h(Computer)382 5394 y(erw)m(orb)s(en)40 +b(w)m(erden)g(m)m(\374ssen,)h(ab)s(er)e(trotzdem)h(die)f(Leistung)h +(mehrerer)g(CPUs)e(zur)1854 5622 y(6)p eop +%%Page: 7 9 +7 8 bop 382 262 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)80 +b(2.1.)71 b(WISSENSCHAFTLICHE)32 b(CLUSTER)p 382 299 +2989 4 v 382 539 a Fp(V)-8 b(erf\374gung)29 b(steh)m(t.)41 +b(Die)28 b(Nac)m(hfrage)i(der)e(Kunden)i(wiederum)g(b)s(eein\035u\377t) +f(das)f(Ange-)382 652 y(b)s(ot)j(der)h(Hersteller)h([P\03498)q(,)f +(Seite)g(511].)45 b(\(Eine)32 b(Ausnahme)h(bilden)f(jene)g(Lizenzen,) +382 764 y(deren)f(Preis)g(v)m(on)f(der)h(Anzahl)g(der)g(maximal)g +(erlaubten)h(Ben)m(utzer)g(abh\344ngt.\))382 927 y(Lin)m(ux)23 +b(ist)e(f\374r)g(den)h(Einsatz)h(in)f(gro\377en)g(Clustern)h(viel)e(b)s +(esser)g(geeignet,)k(da)d(b)s(ei)f(Lin)m(ux)382 1040 +y(k)m(eine)45 b(Lizenzgeb\374hren)i(pro)e(Installation)h(anfallen.)83 +b(Im)45 b(folgenden)g(eine)g(kleine)382 1153 y(\334b)s(ersic)m(h)m(t)23 +b(\374b)s(er)g(die)g(v)m(ersc)m(hiedenen)h(Aufgab)s(enstellungen,)h +(die)e(mit)g(Clustern)g(un)m(ter)382 1266 y(Lin)m(ux)31 +b(gel\366st)g(w)m(erden)h(k)m(\366nnen.)41 b([Sha00)q(])382 +1602 y Fj(2.1)130 b(Wissensc)l(haftlic)l(he)46 b(Cluster)382 +1855 y Fp(F\374r)31 b(aufw)m(endige)j(Sim)m(ulationen)g(wird)e(oft)f +(eine)h(derart)g(gro\377e)g(Anzahl)g(an)g(Rec)m(hen-)382 +1968 y(op)s(erationen)25 b(b)s(en\366tigt,)g(da\377)f(ein)g(einzelner)h +(Computer)g(viele)e(Jahre)i(b)s(en\366tigen)f(w\374r-)382 +2081 y(de,)h(um)f(die)g(gesam)m(te)h(Sim)m(ulation)g(durc)m +(hzuf\374hren.)41 b(Es)23 b(gibt)h(in)g(diesem)g(Bereic)m(h)h(den)382 +2194 y(Ansatz,)33 b(eine)g(Applik)-5 b(ation)34 b(sp)s(eziell)e(f\374r) +h(den)f(Einsatz)i(auf)e(einem)i(Cluster)f(zu)g(en)m(t-)382 +2306 y(wic)m(k)m(eln.)42 b(In)30 b(diesem)h(F)-8 b(all)32 +b(ist)e(der)h(En)m(t)m(wic)m(kler)i(selbst)d(f\374r)h(die)f(Aufteilung) +h(der)g(Last)382 2419 y(auf)25 b(die)h(einzelnen)h(Knoten)f(des)f +(Clusters)h(zust\344ndig.)40 b(Das)25 b(SSI)g(wird)h(hier)g(mit)g +(Hilfe)382 2532 y(einer)f(Bibliothek)h(den)f(Applik)-5 +b(ationen)26 b(zur)f(V)-8 b(erf\374gung)26 b(gestellt.)39 +b(Die)25 b(b)s(ek)-5 b(ann)m(testen)382 2645 y(Bibliothek)m(en)32 +b(sind)e(PVM)h([Sun90)q(])f(und)h(MPI)f([MPI97].)382 +2981 y Fj(2.2)130 b(Lastv)l(erteilung)382 3237 y Fo(2.2.1)112 +b(hohe)38 b(CPU-Last)382 3459 y Fp(Ein)33 b(anderer)g(Ansatz)g(b)s +(eruh)m(t)g(darauf,)g(die)g(T)-8 b(atsac)m(he,)35 b(da\377)d(es)g(sic)m +(h)h(um)g(einen)g(Clu-)382 3572 y(ster)44 b(handelt,)49 +b(v)m(or)c(der)g(Applik)-5 b(ation)45 b(zu)g(v)m(erb)s(ergen.)84 +b(In)44 b(diesem)h(F)-8 b(all)45 b(m)m(u\377)g(die)382 +3685 y(Cluster-Soft)m(w)m(are)38 b(f\374r)d(die)h(Aufteilung)g(der)g +(Last)f(auf)h(die)f(einzelnen)i(Knoten)g(sor-)382 3798 +y(gen.)47 b(Dies)32 b(wird)h(in)g(MOSIX,)f(einer)h(Cluster-Soft)m(w)m +(are,)j(durc)m(h)e(die)f(Migration)g(v)m(on)382 3910 +y(An)m(w)m(endungsprozessen)28 b(erm\366glic)m(h)m(t.)42 +b(Hier)26 b(\034ndet)g(sic)m(h)h(das)e(SSI)h(in)g(der)g(Systemruf-)382 +4023 y(sc)m(hnittstelle)32 b(des)e(Lin)m(ux-MOSIX)h(Kernels)g(wieder.) +382 4186 y(Auf)g(die)h(Grenzen)h(des)f(SSI)g(st\366\377t)g(der)g +(MOSIX-Cluster)g(b)s(ei)g(Netzw)m(erkv)m(erbindun-)382 +4299 y(gen.)40 b(W)-8 b(enn)28 b(eine)h(Applik)-5 b(ation)28 +b(einen)h(IP-So)s(c)m(k)m(et)g(v)m(erw)m(endet,)h(k)-5 +b(ann)28 b(sie)f(nic)m(h)m(t)j(mehr)382 4412 y(migriert)h(w)m(erden.) +382 4705 y Fo(2.2.2)112 b(hohe)38 b(Netzw)m(erk-Last)382 +4927 y Fp(V)-8 b(or)23 b(allem)g(f\374r)g(W)-8 b(ebserv)m(er)23 +b(mit)g(vielen)g(Zugri\033en)h(baut)f(man)g(Cluster,)i(b)s(ei)e(denen)g +(die)382 5040 y(hereink)m(ommenden)32 b(Anforderungen)f(der)e(Clien)m +(ts)h(auf)f(mehrere)i(W)-8 b(ebserv)m(er)30 b(aufge-)382 +5152 y(teilt)40 b(w)m(erden.)70 b(Auf)39 b(diesem)h(Gebiet)h(gibt)f(es) +f(sp)s(eziell)h(in)g(letzter)g(Zeit)g(zahlreic)m(he)382 +5265 y(En)m(t)m(wic)m(klungen.)1854 5622 y(7)p eop +%%Page: 8 10 +8 9 bop 382 264 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)439 +b(2.3.)71 b(HOHE)30 b(VERF\334GBARKEIT)p 382 301 2989 +4 v 382 539 a Fn(RDNS)44 b Fp(Die)24 b(ersten)f(L\366sungen)i +(basierten)f(auf)f(RRDNS)f(\(round)i(robin)g(dns\),)h(w)m(ob)s(ei)609 +652 y(der)46 b(DNS)e(\(domain)j(name)f(system\))e(Serv)m(er)i(mit)g +(gleic)m(her)h(V)-8 b(erteilung)46 b(die)609 764 y(IP-A)m(dressen)c +(der)f(einzelnen)h(Cluster-Knoten)h(an)e(die)g(Clien)m(ts)h(w)m +(eitergibt.)609 877 y(Der)33 b(gr\366\377te)h(Nac)m(h)m(teil)g(dieser)f +(L\366sung)h(liegt)f(darin,)h(da\377)f(die)g(Last)g(un)m(ter)h(den)609 +990 y(Cluster-Knoten)42 b(meist)f(sc)m(hlec)m(h)m(t)h(v)m(erteilt)f +(wird.)71 b(Die)40 b(Gr\374nde)h(daf\374r)f(sind)609 +1103 y(vielseitig,)26 b(einer)e(da)m(v)m(on)h(ist,)f(da\377)g(der)g +(DNS-Serv)m(er)h(nic)m(h)m(t)g(k)m(on)m(trollieren)h(k)-5 +b(ann,)609 1216 y(wie)31 b(lange)g(die)g(IP-A)m(dresse)f(clien)m +(t-seitig)i(gesp)s(eic)m(hert)g(wird.)382 1404 y Fn(Application)j(lev)m +(el)g(Pro)m(xies)45 b Fp(Bei)35 b(dieser)h(L\366sung)g(wird)f(ein)h +(Pro)m(xy-Serv)m(er,)i(wie)609 1517 y(er)22 b(v)m(on)g(der)g(Clien)m +(t-Seite)i(b)s(ek)-5 b(ann)m(t)23 b(ist,)g(auf)f(der)g(Serv)m(er-Seite) +i(eingesetzt.)38 b(Die-)609 1630 y(ser)d(Pro)m(xy)h(k)m(enn)m(t)h(die)f +(Lastv)m(erteilung)h(im)f(Cluster)g(und)g(leitet)g(die)f(Anfrage)609 +1742 y(des)24 b(Clien)m(ts)h(an)g(den)f(Knoten)i(mit)e(der)h +(geringsten)g(Last)g(w)m(eiter.)39 b(Diese)25 b(Arc)m(hi-)609 +1855 y(tektur)33 b(hat)g(jedo)s(c)m(h)g(den)g(Nac)m(h)m(teil,)i(da\377) +e(die)f(maximale)i(Gr\366\377e)f(des)f(Clusters)609 1968 +y(durc)m(h)g(die)e(Leistungsf\344higk)m(eit)i(des)f(Pro)m(xys)f(b)s +(egrenzt)h(ist.)382 2156 y Fn(IP)j(lev)m(el)h(Sc)m(heduling)45 +b Fp(Es)37 b(gibt)h(\026)f(eb)s(enso)g(wie)h(b)s(ei)f(b)s(ei)g(der)g +(Pro)m(xy-L\366sung)i(\026)609 2269 y(einen)31 b(Computer,)g(der)f(die) +g(Anforderungen)h(auf)e(die)h(Knoten)h(aufteilt;)g(aller-)609 +2382 y(dings)38 b(gesc)m(hieh)m(t)i(dies)f(durc)m(h)g(NA)-8 +b(T)38 b(\(net)m(w)m(ork)i(address)e(translations\).)65 +b(Ein)609 2495 y(V)-8 b(orteil)37 b(gegen)m(\374b)s(er)g(der)f +(L\366sung)g(mit)g(dem)g(Pro)m(xy)g(ist,)g(da\377)g(nic)m(h)m(t)i +(f\374r)d(jedes)609 2608 y(Protok)m(oll)j(ein)e(sp)s(ezieller)h(Pro)m +(xy)g(en)m(t)m(wic)m(k)m(elt)i(w)m(erden)e(m)m(u\377.)59 +b(Die)37 b(maximale)609 2720 y(Gr\366\377e)h(des)g(Clusters)g(wird)h +(zw)m(ar)g(w)m(eiterhin)g(durc)m(h)h(die)e(Leistungsf\344higk)m(eit)609 +2833 y(des)33 b(Rec)m(hners)g(b)s(egrenzt,)h(jedo)s(c)m(h)f(ist)f(NA)-8 +b(T)33 b(im)g(Kernel)g(implemen)m(tiert,)j(w)m(as)609 +2946 y(diesen)31 b(Nac)m(h)m(teil)h(et)m(w)m(as)g(en)m(tsc)m(h\344rft.) +609 3059 y(Eine)e(andere)h(V)-8 b(arian)m(te)31 b(wird)f(mit)f(Hilfe)g +(v)m(on)h(IP-T)-8 b(unnelling)32 b(implemen)m(tiert.)609 +3172 y(Hier)37 b(w)m(erden)h(die)e(IP-P)m(ak)m(ete)j(innerhalb)f +(anderer)f(IP-P)m(ak)m(ete)h(zu)f(den)g(Kno-)609 3285 +y(ten)e(des)f(Clusters)g(b)s(ef\366rdert.)53 b(F\374r)34 +b(den)g(angespro)s(c)m(henen)j(Knoten)e(en)m(tsteh)m(t)609 +3398 y(der)30 b(Eindruc)m(k,)i(da\377)e(diese)g(Anforderung)h(direkt)f +(v)m(om)g(Clien)m(t)h(k)m(omm)m(t,)h(daher)609 3511 y(sc)m(hic)m(kt)38 +b(er)f(die)g(An)m(t)m(w)m(ort)i(direkt)e(zum)g(Clien)m(t)h(zur\374c)m +(k.)60 b(Im)37 b(Un)m(tersc)m(hied)h(zu)609 3624 y(den)24 +b(L\366sungen)g(mit)g(Pro)m(xy)g(und)f(NA)-8 b(T)24 b(ist)f(hier)h(die) +f(Netzlast)h(f\374r)f(den)g(Knoten,)609 3737 y(der)31 +b(die)g(Aufteilung)f(der)h(Anforderungen)h(\374b)s(ernimm)m(t,)g(viel)e +(kleiner.)382 3999 y(Im)k(Rahmen)g(des)g(Lin)m(ux)h(Virtual)g(Serv)m +(er)g(Pro)5 b(jektes)34 b([ZJW99)q(])g(wurde)h(eine)g(lin)m(ux-)382 +4112 y(basierte)c(Implemen)m(tierung)i(des)d(IP-Lev)m(el-Sc)m +(heduling-Ansatzes)k(gesc)m(ha\033en.)382 4275 y(So)m(w)m(ohl)41 +b(b)s(ei)d(diesem)i(Cluster,)h(wie)e(auc)m(h)h(b)s(ei)f(Clustern)h +(f\374r)e(hohe)i(V)-8 b(erf\374gbark)m(eit,)382 4387 +y(wird)31 b(das)f(SSI)g(aussc)m(hlie\377lic)m(h)j(auf)d(Netzw)m(erk)m +(eb)s(ene)i(erf\374llt.)382 4724 y Fj(2.3)130 b(Hohe)44 +b(V)-11 b(erf\374gbark)l(eit)382 4976 y Fp(F\374r)33 +b(viele)h(An)m(w)m(endungen)i(ist)d(hohe)h(V)-8 b(erf\374gbark)m(eit)34 +b(\(high)g(a)m(v)-5 b(ailabilit)m(y\))36 b(die)d(wic)m(h-)382 +5089 y(tigste)e(Eigensc)m(haft.)42 b(Beispiele)31 b(daf\374r)g(sind)g +(File-,)g(Prin)m(t-,)h(Daten)m(bank-,)g(Gatew)m(a)m(y-)382 +5202 y(und)38 b(Applik)-5 b(ations-Serv)m(er)39 b(in)e(Un)m(ternehmen,) +k(ab)s(er)d(auc)m(h)g(\366\033en)m(tlic)m(h)h(zug\344nglic)m(he)382 +5315 y(W)-8 b(eb-Serv)m(er.)1854 5622 y(8)p eop +%%Page: 9 11 +9 10 bop 382 264 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)439 +b(2.3.)71 b(HOHE)30 b(VERF\334GBARKEIT)p 382 301 2989 +4 v 382 539 a Fo(2.3.1)112 b(V)-9 b(erf\374gbark)m(eit)382 +760 y Fp(V)h(erf\374gbark)m(eit)32 b(\(a)m(v)-5 b(ailabilit)m(y\))32 +b(wird)f(wie)g(folgt)f(de\034niert)i([K)m(op97)r(]:)1416 +1056 y Fi(A)26 b Fh(=)1821 994 y Fi(M)10 b(T)j(T)g(F)p +1615 1035 712 4 v 1615 1118 a(M)d(T)j(T)g(F)33 b Fh(+)20 +b Fi(M)10 b(T)j(T)g(R)382 1352 y Fp(MTTF)185 b(Durc)m(hsc)m(hnittlic)m +(he)42 b(Zeit)d(der)f(fehlerfreien)h(F)-8 b(unktion)40 +b(\(mean)f(time)f(to)839 1465 y(failure\).)382 1652 y(MTTR)177 +b(Durc)m(hsc)m(hnittlic)m(he)34 b(Dauer)d(einer)g(Reparatur)g(\(mean)g +(time)g(to)g(repair\).)382 1840 y(MTBF)186 b(Die)39 b(durc)m(hsc)m +(hnittlic)m(he)j(Zeit)d(zwisc)m(hen)h(zw)m(ei)g(Ausf\344llen)e(ist)g +(de\034niert)839 1953 y(als)30 b Fi(M)10 b(T)j(B)5 b(F)38 +b Fh(=)25 b Fi(M)10 b(T)j(T)g(F)33 b Fh(+)20 b Fi(M)10 +b(T)j(T)g(R)30 b Fp(\(mean)h(time)g(b)s(et)m(w)m(een)h(failures\).)382 +2215 y(Dieser)d(Ausdruc)m(k)h(k)-5 b(ann)30 b(erst)f(am)h(Ende)g(der)g +(Leb)s(ensdauer)h(eines)e(Systems)g(b)s(erec)m(h-)382 +2328 y(net)38 b(w)m(erden.)63 b(Betrac)m(h)m(tet)40 b(man)e(allerdings) +g(die)g(V)-8 b(erf\374gbark)m(eit)39 b(eines)e(Systems)g(in)382 +2441 y(einem)h(Jahr,)i(so)e(ergibt)g(sic)m(h)g(folgende)g(T)-8 +b(ab)s(elle)39 b(f\374r)e(die)h(maximal)g(erlaubte)h(Aus-)382 +2554 y(fallszeit)30 b(eines)h(Systems.)p 931 2704 1891 +4 v 929 2817 4 113 v 981 2783 a(V)-8 b(erf\374gbark)m(eit)p +1564 2817 V 101 w(erlaubte)32 b(Ausfallszeit)p 2468 2817 +V 100 w(Klasse)p 2820 2817 V 931 2820 1891 4 v 931 2837 +V 929 2950 4 113 v 1150 2916 a(99)f(\045)p 1564 2950 +V 586 w(88)g(h)p 2468 2950 V 520 w(2)p 2820 2950 V 931 +2953 1891 4 v 929 3066 4 113 v 1115 3032 a(99,9)g(\045)p +1564 3066 V 574 w(9)f(h)p 2468 3066 V 543 w(3)p 2820 +3066 V 931 3069 1891 4 v 929 3182 4 113 v 1093 3148 a(99,99)h(\045)p +1564 3182 V 478 w(52)g(min)p 2468 3182 V 470 w(4)p 2820 +3182 V 931 3185 1891 4 v 929 3298 4 113 v 1070 3264 a(99,999)g(\045)p +1564 3298 V 479 w(5)f(min)p 2468 3298 V 493 w(5)p 2820 +3298 V 931 3302 1891 4 v 929 3414 4 113 v 1047 3381 a(99,9999)i(\045)p +1564 3414 V 450 w(31)f(sec)p 2468 3414 V 487 w(6)p 2820 +3414 V 931 3418 1891 4 v 382 3609 a(V)-8 b(ergleic)m(h)m(t)35 +b(man)f(dies)f(mit)g(der)g(T)-8 b(atsac)m(he,)36 b(da\377)d(die)g +(meisten)h(Lin)m(ux-Distributoren)382 3722 y(mindestens)i(4)g(mal)h(im) +f(Jahr)g(neue)h(Distributionen)g(herausbringen,)j(so)35 +b(ist)h(es)f(er-)382 3835 y(sic)m(h)m(tlic)m(h,)27 b(da\377)c(eine)h(V) +-8 b(erf\374gbark)m(eit)24 b(v)m(on)g(mehr)f(als)g(99)g(\045)h(n)m(ur)f +(mit)h(zw)m(ei)g(Systemen)f(zu)382 3948 y(erreic)m(hen)j(ist,)f(v)m(on) +f(denen)h(ein)g(System)f(in)g(Pro)s(duktion)h(bleib)s(en)f(k)-5 +b(ann,)26 b(w)m(\344hrend)g(auf)382 4061 y(dem)e(anderen)g(W)-8 +b(artungsarb)s(eiten)26 b(durc)m(hgef\374hrt)f(w)m(erden.)40 +b(Zw)m(ar)24 b(ist)f(die)h(Installati-)382 4174 y(on)29 +b(einer)g(Lin)m(ux-Distribution)j(heute)d(w)m(esen)m(tlic)m(h)j(einfac) +m(her)e(als)e(fr\374her,)i(do)s(c)m(h)f(nac)m(h)382 4287 +y(dem)h(Einspielen)i(neuer)e(Programm)m(v)m(ersionen)k(sind)c(oft)f +(\304nderungen)j(an)e(K)m(on\034gu-)382 4400 y(rations\034les)35 +b(not)m(w)m(endig.)57 b(\(Diese)35 b(Problematik)h(b)s(etri\033t)f(nic) +m(h)m(t)i(alle)e(Cluster,)h(siehe)382 4513 y(auc)m(h)31 +b(Absc)m(hnitt)h(2.3.1.1.\))382 4675 y(V)-8 b(erzic)m(h)m(tet)26 +b(man)e(auf)f(die)g(laufende)i(Aktualisierung)f(der)f(Lin)m +(ux-Distribution,)28 b(so)23 b(ist)382 4788 y(es)32 b(b)s(ei)f +(\366\033en)m(tlic)m(h)j(zug\344nglic)m(hen)h(Systemen)e(eine)f +(Mindestanforderung,)i(die)f(neue-)382 4901 y(sten)d(sic)m +(herheitsrelev)-5 b(an)m(ten)34 b(Aktualisierungen)d(einzuspielen.)382 +5064 y(Betrac)m(h)m(tet)j(man)d(n)m(ur)h(die)g(Hardw)m(are,)h(dann)f +(ist)f(es)g(n)m(ur)h(mehr)g(ein)f(kleiner)h(Sc)m(hritt,)382 +5177 y(aus)21 b(zw)m(ei)h(unabh\344ngigen)i(Systemen)d(einen)h(Cluster) +g(zu)f(bauen,)j(b)s(ei)d(dem)h(ein)f(Knoten)382 5290 +y(aktiv)30 b(das)g(Service)h(an)m(bietet)h(und)f(der)g(zw)m(eite)g +(Knoten)h(den)e(aktiv)m(en)h(\374b)s(erw)m(ac)m(h)m(t.)1854 +5622 y(9)p eop +%%Page: 10 12 +10 11 bop 382 264 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)439 +b(2.3.)71 b(HOHE)30 b(VERF\334GBARKEIT)p 382 301 2989 +4 v 382 539 a Fp(P\034ster)36 b([P\03498)r(])f(f\374hrt)h(auc)m(h)h +(den)f(Begri\033)g(der)g(V)-8 b(erf\374gbark)m(eitsklasse)36 +b(ein.)57 b(Er)36 b(gibt)382 652 y(folgende)31 b(Beispiele:)p +633 801 2486 4 v 631 914 4 113 v 718 881 a(1-2)p 922 +914 V 1070 w(LANs)p 3117 914 V 633 918 2486 4 v 631 1031 +4 113 v 756 997 a(2)p 922 1031 V 735 w(herk)m(\366mmlic)m(he)i +(Computer)p 3117 1031 V 633 1034 2486 4 v 631 1147 4 +113 v 683 1113 a(3\(-4\))p 922 1147 V 101 w(Ho)s(c)m(h)m(v)m +(erf\374gbark)m(eits-Cluster)g(aus)d(COTS-K)m(omp)s(onen)m(ten)p +3117 1147 V 633 1150 2486 4 v 631 1263 4 113 v 683 1229 +a(\(3-\)4)p 922 1263 V 917 w(Mainframes)p 3117 1263 V +633 1266 2486 4 v 631 1379 4 113 v 756 1345 a(5)p 922 +1379 V 633 w(Computer)i(des)e(T)-8 b(elefonsystems)p +3117 1379 V 633 1383 2486 4 v 631 1496 4 113 v 756 1462 +a(6)p 922 1496 V 596 w(Bordcomputer)32 b(eines)f(Flugzeuges)p +3117 1496 V 633 1499 2486 4 v 382 1690 a(COTS)j(steh)m(t)f(f\374r)g +(commercial-o\033-the-shelf,)j(d.h.)49 b(K)m(omp)s(onen)m(ten,)36 +b(die)d(w)m(eitl\344u\034g)382 1803 y(v)m(erf\374gbar)e(sind.)382 +1966 y(Bei)22 b(Systemen)g(der)g(h\366)s(c)m(hsten)g(Klasse)g(wird)g +(zumeist)g(v)m(on)g(fehlertolerierenden)i(\(fault)382 +2079 y(toleran)m(t\))38 b(Systemen)f(gespro)s(c)m(hen.)59 +b(Bisher)36 b(wurden)h(aussc)m(hlie\377lic)m(h)i(Systeme,)f(b)s(ei)382 +2192 y(denen)k(diese)g(Eigensc)m(haft)h(in)f(Hardw)m(are)h(implemen)m +(tiert)h(wurde)e(und)g(somit)g(der)382 2305 y(Ausfall)d(einer)h(K)m +(omp)s(onen)m(te)i(der)e(Hardw)m(are)h(f\374r)e(die)h(Umgebung)h(nic)m +(h)m(t)g(sic)m(h)m(tbar)382 2418 y(w)m(ar,)31 b(so)f(b)s(ezeic)m(hnet.) +382 2580 y(Da)37 b(Kunden)g(den)h(Begri\033)f +(\022fehlertolerierend\021)46 b(gerne)38 b(h\366ren,)h(wird)e(dieser)g +(Begri\033)382 2693 y(o)s(der)k(Ab)m(w)m(andlungen)j(wie)e(\022soft)m +(w)m(are)g(fault)g(toleran)m(t\021)50 b(auc)m(h)43 b(gerne)f(v)m(on)f +(\034ndigen)382 2806 y(An)m(bietern)29 b(v)m(on)f(Ho)s(c)m(h)m(v)m +(erf\374gbark)m(eits-Clustern)k(v)m(erw)m(endet.)41 b(Ho)s(c)m(h)m(v)m +(erf\374gbark)m(eits-)382 2919 y(Cluster)31 b(\(high)g(a)m(v)-5 +b(ailabilit)m(y)32 b(clusters\))f(w)m(erden)h(im)e(folgendem)i(als)e +(HA-Cluster)h(b)s(e-)382 3032 y(zeic)m(hnet.)382 3322 +y Fn(2.3.1.1)103 b(Betriebszust\344nde)382 3543 y Fp(Eine)40 +b(Un)m(terbrec)m(h)m(ung)j(des)c(Betrieb)s(es)g(w)m(egen)i(eines)f +(Ereignisses,)i(das)d(b)s(ereits)g(im)382 3656 y(V)-8 +b(orhinein)43 b(b)s(ek)-5 b(ann)m(t)43 b(ist,)h(wird)f(als)e(geplan)m +(te)j(Un)m(terbrec)m(h)m(ung)h(\(planned)e(outage\))382 +3769 y(b)s(ezeic)m(hnet.)77 b(In)41 b(diese)h(Kategorie)i(f\344llt)d +(auc)m(h)i(das)f(ob)s(en)g(genann)m(te)i(Beispiel)e(der)382 +3882 y(Aktualisierung)31 b(der)g(Systemsoft)m(w)m(are.)382 +4045 y(Das)23 b(Gegenst\374c)m(k)h(dazu)f(sind)g(\(nic)m(h)m(t)i +(geplan)m(te\))g(Ausf\344lle)e(\(unplanned)i(outages\),)g(die)382 +4158 y(\026)31 b(wie)g(der)g(Name)g(b)s(ereits)f(v)m(erm)m(uten)j +(l\344\377t)e(\026)g(auf)f(nic)m(h)m(t)j(v)m(orherzusehende)f(Ereig-) +382 4271 y(nisse)i(zur\374c)m(kgehen.)53 b(In)33 b(diese)i(Kategorie)g +(fallen)f(Ausf\344lle)g(v)m(on)g(Hardw)m(arek)m(omp)s(o-)382 +4384 y(nen)m(ten,)h(bisher)e(nic)m(h)m(t)i(b)s(ek)-5 +b(ann)m(te)33 b(Soft)m(w)m(arefehler)i(und)f(Ereignisse)f(der)g +(Umgebung)382 4497 y(\(z.B.)e(Stromausfall\).)382 4659 +y(Nic)m(h)m(t)d(alle)f(Computersysteme)h(m)m(\374ssen)f(jedo)s(c)m(h)g +(rund)g(um)g(die)g(Uhr)g(v)m(erf\374gbar)g(sein.)382 +4772 y(Ein)e(System)g(f\374r)f(den)h(Aktienhandel)h(m)m(u\377)g(z.B.)e +(n)m(ur)i(w)m(\344hrend)g(der)f(B\366rsen\366\033n)m(ungs-)382 +4885 y(zeiten)j(v)m(erf\374gbar)h(sein.)39 b(Bei)28 b(diesen)g +(Systemen)g(k)-5 b(ann)28 b(der)g(Betrieb)g(zu)g(jenen)g(Zeiten)382 +4998 y(un)m(terbro)s(c)m(hen)j(w)m(erden,)g(in)d(denen)i(die)e(V)-8 +b(erf\374gbark)m(eit)31 b(des)d(Systems)g(ohnehin)i(nic)m(h)m(t)382 +5111 y(erforderlic)m(h)36 b(ist;)g(die)e(V)-8 b(erf\374gbark)m(eit)36 +b(wird)f(n)m(ur)g(\374b)s(er)f(den)h(Zeitraum,)i(der)d(v)m(on)h(In-)382 +5224 y(teresse)30 b(ist,)g(b)s(erec)m(hnet.)1831 5622 +y(10)p eop +%%Page: 11 13 +11 12 bop 382 264 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)439 +b(2.3.)71 b(HOHE)30 b(VERF\334GBARKEIT)p 382 301 2989 +4 v 382 2095 a + currentpoint currentpoint translate 0.81702 0.81702 scale neg exch +neg exch translate + 382 2095 a @beginspecial 89 @llx 583 @lly +528 @urx 825 @ury 4390 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//ha-cluster.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Wed Mar 29 00:02:16 2000 +%%Title: ha-cluster.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 89 583 528 825 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +newpath +382.949 762.521 m +385.783 759.686 l +408.461 759.686 l +411.295 762.521 l +closepath +0.8 0.8 0.8 rgb +F +382.949 762.521 m +385.783 759.686 l +408.461 759.686 l +411.295 762.521 l +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[34.0158 0 0 -28.3465 380.114 790.867] rect +gsave +0.8 0.8 0.8 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[28.3465 0 0 -22.6772 382.949 788.033] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[39.6282 -2.12668 -3.43822 -11.171 377.612 757.907] rect +S +newpath +378.622 755.581 m +379.754 755.52 l +S +newpath +376.559 748.878 m +377.691 748.818 l +S +newpath +377.075 750.554 m +378.207 750.493 l +S +newpath +377.591 752.23 m +378.723 752.169 l +S +newpath +378.106 753.905 m +379.239 753.844 l +S +newpath +380.32 755.49 m +381.453 755.429 l +S +newpath +378.258 748.787 m +379.39 748.726 l +S +newpath +378.773 750.463 m +379.905 750.402 l +S +newpath +379.289 752.138 m +380.421 752.078 l +S +newpath +379.805 753.814 m +380.937 753.753 l +S +newpath +382.019 755.399 m +383.151 755.338 l +S +newpath +379.956 748.696 m +381.088 748.635 l +S +newpath +380.472 750.372 m +381.604 750.311 l +S +newpath +380.987 752.047 m +382.12 751.986 l +S +newpath +381.503 753.723 m +382.635 753.662 l +S +newpath +383.717 755.307 m +384.849 755.247 l +S +newpath +381.654 748.605 m +382.786 748.544 l +S +newpath +382.17 750.28 m +383.302 750.22 l +S +newpath +382.686 751.956 m +383.818 751.895 l +S +newpath +383.201 753.632 m +384.334 753.571 l +S +newpath +385.416 755.216 m +386.548 755.155 l +S +newpath +383.353 748.514 m +384.485 748.453 l +S +newpath +383.868 750.189 m +385.001 750.129 l +S +newpath +384.384 751.865 m +385.516 751.804 l +S +newpath +384.9 753.541 m +386.032 753.48 l +S +newpath +387.114 755.125 m +388.246 755.064 l +S +newpath +385.051 748.423 m +386.183 748.362 l +S +newpath +385.567 750.098 m +386.699 750.037 l +S +newpath +386.082 751.774 m +387.215 751.713 l +S +newpath +386.598 753.449 m +387.73 753.389 l +S +newpath +388.812 755.034 m +389.944 754.973 l +S +newpath +386.749 748.331 m +387.882 748.271 l +S +newpath +387.265 750.007 m +388.397 749.946 l +S +newpath +387.781 751.683 m +388.913 751.622 l +S +newpath +388.296 753.358 m +389.429 753.298 l +S +newpath +390.511 754.943 m +391.643 754.882 l +S +newpath +388.448 748.24 m +389.58 748.18 l +S +newpath +388.963 749.916 m +390.096 749.855 l +S +newpath +389.479 751.592 m +390.611 751.531 l +S +newpath +389.995 753.267 m +391.127 753.206 l +S +newpath +392.209 754.852 m +393.341 754.791 l +S +newpath +390.146 748.149 m +391.278 748.088 l +S +newpath +390.662 749.825 m +391.794 749.764 l +S +newpath +391.177 751.5 m +392.31 751.44 l +S +newpath +391.693 753.176 m +392.825 753.115 l +S +newpath +393.907 754.761 m +395.04 754.7 l +S +newpath +391.844 748.058 m +392.977 747.997 l +S +newpath +392.36 749.734 m +393.492 749.673 l +S +newpath +392.876 751.409 m +394.008 751.348 l +S +newpath +393.392 753.085 m +394.524 753.024 l +S +newpath +395.606 754.669 m +396.738 754.609 l +S +newpath +393.543 747.967 m +394.675 747.906 l +S +newpath +394.058 749.642 m +395.191 749.582 l +S +newpath +394.574 751.318 m +395.706 751.257 l +S +newpath +395.09 752.994 m +396.222 752.933 l +S +newpath +397.304 754.578 m +398.436 754.517 l +S +newpath +395.241 747.876 m +396.373 747.815 l +S +newpath +395.757 749.551 m +396.889 749.491 l +S +newpath +396.273 751.227 m +397.405 751.166 l +S +newpath +396.788 752.903 m +397.92 752.842 l +S +newpath +399.002 754.487 m +400.135 754.426 l +S +newpath +408.06 754.001 m +409.192 753.94 l +S +newpath +396.939 747.785 m +398.072 747.724 l +S +newpath +405.997 747.298 m +407.129 747.238 l +S +newpath +397.455 749.46 m +398.587 749.399 l +S +newpath +406.513 748.974 m +407.645 748.913 l +S +newpath +397.971 751.136 m +399.103 751.075 l +S +newpath +407.029 750.65 m +408.161 750.589 l +S +newpath +398.487 752.811 m +399.619 752.751 l +S +newpath +407.544 752.325 m +408.677 752.265 l +S +newpath +400.701 754.396 m +401.833 754.335 l +S +newpath +409.759 753.91 m +410.891 753.849 l +S +newpath +398.638 747.693 m +399.77 747.633 l +S +newpath +407.696 747.207 m +408.828 747.147 l +S +newpath +399.153 749.369 m +400.286 749.308 l +S +newpath +408.211 748.883 m +409.344 748.822 l +S +newpath +399.669 751.045 m +400.801 750.984 l +S +newpath +408.727 750.559 m +409.859 750.498 l +S +newpath +400.185 752.72 m +401.317 752.66 l +S +newpath +409.243 752.234 m +410.375 752.173 l +S +newpath +402.399 754.305 m +403.531 754.244 l +S +newpath +411.457 753.819 m +412.589 753.758 l +S +newpath +400.336 747.602 m +401.468 747.542 l +S +newpath +409.394 747.116 m +410.526 747.055 l +S +newpath +400.852 749.278 m +401.984 749.217 l +S +newpath +409.91 748.792 m +411.042 748.731 l +S +newpath +401.368 750.954 m +402.5 750.893 l +S +newpath +410.425 750.467 m +411.558 750.407 l +S +newpath +401.883 752.629 m +403.016 752.568 l +S +newpath +410.941 752.143 m +412.073 752.082 l +S +newpath +404.097 754.214 m +405.23 754.153 l +S +newpath +413.155 753.728 m +414.287 753.667 l +S +newpath +402.034 747.511 m +403.167 747.45 l +S +newpath +411.092 747.025 m +412.225 746.964 l +S +newpath +402.55 749.187 m +403.682 749.126 l +S +newpath +411.608 748.701 m +412.74 748.64 l +S +newpath +403.066 750.862 m +404.198 750.802 l +S +newpath +412.124 750.376 m +413.256 750.316 l +S +newpath +403.582 752.538 m +404.714 752.477 l +S +newpath +412.64 752.052 m +413.772 751.991 l +S +newpath +382.949 634.962 m +385.783 632.127 l +408.461 632.127 l +411.295 634.962 l +closepath +0.8 0.8 0.8 rgb +F +382.949 634.962 m +385.783 632.127 l +408.461 632.127 l +411.295 634.962 l +0 0 0 rgb +S +[34.0158 0 0 -28.3465 380.114 663.308] rect +gsave +0.8 0.8 0.8 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[28.3465 0 0 -22.6772 382.949 660.474] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[39.6282 -2.12668 -3.43822 -11.171 377.612 630.348] rect +S +newpath +378.622 628.022 m +379.754 627.961 l +S +newpath +376.559 621.319 m +377.691 621.259 l +S +newpath +377.075 622.995 m +378.207 622.934 l +S +newpath +377.591 624.671 m +378.723 624.61 l +S +newpath +378.106 626.346 m +379.239 626.285 l +S +newpath +380.32 627.931 m +381.453 627.87 l +S +newpath +378.258 621.228 m +379.39 621.167 l +S +newpath +378.773 622.904 m +379.905 622.843 l +S +newpath +379.289 624.579 m +380.421 624.519 l +S +newpath +379.805 626.255 m +380.937 626.194 l +S +newpath +382.019 627.84 m +383.151 627.779 l +S +newpath +379.956 621.137 m +381.088 621.076 l +S +newpath +380.472 622.813 m +381.604 622.752 l +S +newpath +380.987 624.488 m +382.12 624.427 l +S +newpath +381.503 626.164 m +382.635 626.103 l +S +newpath +383.717 627.748 m +384.849 627.688 l +S +newpath +381.654 621.046 m +382.786 620.985 l +S +newpath +382.17 622.721 m +383.302 622.661 l +S +newpath +382.686 624.397 m +383.818 624.336 l +S +newpath +383.201 626.073 m +384.334 626.012 l +S +newpath +385.416 627.657 m +386.548 627.596 l +S +newpath +383.353 620.955 m +384.485 620.894 l +S +newpath +383.868 622.63 m +385.001 622.57 l +S +newpath +384.384 624.306 m +385.516 624.245 l +S +newpath +384.9 625.982 m +386.032 625.921 l +S +newpath +387.114 627.566 m +388.246 627.505 l +S +newpath +385.051 620.864 m +386.183 620.803 l +S +newpath +385.567 622.539 m +386.699 622.478 l +S +newpath +386.082 624.215 m +387.215 624.154 l +S +newpath +386.598 625.89 m +387.73 625.83 l +S +newpath +388.812 627.475 m +389.944 627.414 l +S +newpath +386.749 620.772 m +387.882 620.712 l +S +newpath +387.265 622.448 m +388.397 622.387 l +S +newpath +387.781 624.124 m +388.913 624.063 l +S +newpath +388.296 625.799 m +389.429 625.739 l +S +newpath +390.511 627.384 m +391.643 627.323 l +S +newpath +388.448 620.681 m +389.58 620.621 l +S +newpath +388.963 622.357 m +390.096 622.296 l +S +newpath +389.479 624.033 m +390.611 623.972 l +S +newpath +389.995 625.708 m +391.127 625.647 l +S +newpath +392.209 627.293 m +393.341 627.232 l +S +newpath +390.146 620.59 m +391.278 620.529 l +S +newpath +390.662 622.266 m +391.794 622.205 l +S +newpath +391.177 623.941 m +392.31 623.881 l +S +newpath +391.693 625.617 m +392.825 625.556 l +S +newpath +393.907 627.202 m +395.04 627.141 l +S +newpath +391.844 620.499 m +392.977 620.438 l +S +newpath +392.36 622.175 m +393.492 622.114 l +S +newpath +392.876 623.85 m +394.008 623.789 l +S +newpath +393.392 625.526 m +394.524 625.465 l +S +newpath +395.606 627.11 m +396.738 627.05 l +S +newpath +393.543 620.408 m +394.675 620.347 l +S +newpath +394.058 622.083 m +395.191 622.023 l +S +newpath +394.574 623.759 m +395.706 623.698 l +S +newpath +395.09 625.435 m +396.222 625.374 l +S +newpath +397.304 627.019 m +398.436 626.958 l +S +newpath +395.241 620.317 m +396.373 620.256 l +S +newpath +395.757 621.992 m +396.889 621.932 l +S +newpath +396.273 623.668 m +397.405 623.607 l +S +newpath +396.788 625.344 m +397.92 625.283 l +S +newpath +399.002 626.928 m +400.135 626.867 l +S +newpath +408.06 626.442 m +409.192 626.381 l +S +newpath +396.939 620.226 m +398.072 620.165 l +S +newpath +405.997 619.739 m +407.129 619.679 l +S +newpath +397.455 621.901 m +398.587 621.84 l +S +newpath +406.513 621.415 m +407.645 621.354 l +S +newpath +397.971 623.577 m +399.103 623.516 l +S +newpath +407.029 623.091 m +408.161 623.03 l +S +newpath +398.487 625.252 m +399.619 625.192 l +S +newpath +407.544 624.766 m +408.677 624.706 l +S +newpath +400.701 626.837 m +401.833 626.776 l +S +newpath +409.759 626.351 m +410.891 626.29 l +S +newpath +398.638 620.134 m +399.77 620.074 l +S +newpath +407.696 619.648 m +408.828 619.588 l +S +newpath +399.153 621.81 m +400.286 621.749 l +S +newpath +408.211 621.324 m +409.344 621.263 l +S +newpath +399.669 623.486 m +400.801 623.425 l +S +newpath +408.727 623 m +409.859 622.939 l +S +newpath +400.185 625.161 m +401.317 625.101 l +S +newpath +409.243 624.675 m +410.375 624.614 l +S +newpath +402.399 626.746 m +403.531 626.685 l +S +newpath +411.457 626.26 m +412.589 626.199 l +S +newpath +400.336 620.043 m +401.468 619.983 l +S +newpath +409.394 619.557 m +410.526 619.496 l +S +newpath +400.852 621.719 m +401.984 621.658 l +S +newpath +409.91 621.233 m +411.042 621.172 l +S +newpath +401.368 623.395 m +402.5 623.334 l +S +newpath +410.425 622.908 m +411.558 622.848 l +S +newpath +401.883 625.07 m +403.016 625.009 l +S +newpath +410.941 624.584 m +412.073 624.523 l +S +newpath +404.097 626.655 m +405.23 626.594 l +S +newpath +413.155 626.169 m +414.287 626.108 l +S +newpath +402.034 619.952 m +403.167 619.891 l +S +newpath +411.092 619.466 m +412.225 619.405 l +S +newpath +402.55 621.628 m +403.682 621.567 l +S +newpath +411.608 621.142 m +412.74 621.081 l +S +newpath +403.066 623.303 m +404.198 623.243 l +S +newpath +412.124 622.817 m +413.256 622.757 l +S +newpath +403.582 624.979 m +404.714 624.918 l +S +newpath +412.64 624.493 m +413.772 624.432 l +S +[42.5197 0 0 -56.6929 311.811 793.701] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +325.984 793.701 m +325.984 745.512 l +311.811 745.512 l +S +[-5.66928 0 0 2.83466 354.331 782.362] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +325.984 782.362 m +354.331 782.362 l +351.496 785.197 l +325.984 785.197 l +325.984 782.362 l +closepath +0.5 0.5 0.5 rgb +F +325.984 782.362 m +354.331 782.362 l +351.496 785.197 l +325.984 785.197 l +325.984 782.362 l +0 0 0 rgb +0.992126 w +2 j +S +[-5.66928 0 0 2.83466 354.331 779.528] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +325.984 779.528 m +354.331 779.528 l +351.496 782.362 l +325.984 782.362 l +325.984 779.528 l +closepath +0.5 0.5 0.5 rgb +F +325.984 779.528 m +354.331 779.528 l +351.496 782.362 l +325.984 782.362 l +325.984 779.528 l +0 0 0 rgb +0.992126 w +2 j +S +[-5.66928 0 0 2.83466 354.331 776.693] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +325.984 776.693 m +354.331 776.693 l +351.496 779.528 l +325.984 779.528 l +325.984 776.693 l +closepath +0.5 0.5 0.5 rgb +F +325.984 776.693 m +354.331 776.693 l +351.496 779.528 l +325.984 779.528 l +325.984 776.693 l +0 0 0 rgb +0.992126 w +2 j +S +[2.83464 0 0 -2.83466 317.48 788.031] 1.57079 4.71239 0 ellipse +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-2.83464 1.04143e-15 1.04144e-15 2.83466 320.315 788.031] 1.57079 4.71239 0 ellipse +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[2.83463 0 0 -5.66931 317.48 790.866] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[42.5197 0 0 -56.6929 311.811 666.142] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +325.984 666.142 m +325.984 617.953 l +311.811 617.953 l +S +[-5.66928 0 0 2.83466 354.331 654.803] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +325.984 654.803 m +354.331 654.803 l +351.496 657.638 l +325.984 657.638 l +325.984 654.803 l +closepath +0.5 0.5 0.5 rgb +F +325.984 654.803 m +354.331 654.803 l +351.496 657.638 l +325.984 657.638 l +325.984 654.803 l +0 0 0 rgb +0.992126 w +2 j +S +[-5.66928 0 0 2.83466 354.331 651.969] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +325.984 651.969 m +354.331 651.969 l +351.496 654.803 l +325.984 654.803 l +325.984 651.969 l +closepath +0.5 0.5 0.5 rgb +F +325.984 651.969 m +354.331 651.969 l +351.496 654.803 l +325.984 654.803 l +325.984 651.969 l +0 0 0 rgb +0.992126 w +2 j +S +[-5.66928 0 0 2.83466 354.331 649.134] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +325.984 649.134 m +354.331 649.134 l +351.496 651.969 l +325.984 651.969 l +325.984 649.134 l +closepath +0.5 0.5 0.5 rgb +F +325.984 649.134 m +354.331 649.134 l +351.496 651.969 l +325.984 651.969 l +325.984 649.134 l +0 0 0 rgb +0.992126 w +2 j +S +[2.83464 0 0 -2.83466 317.48 660.472] 1.57079 4.71239 0 ellipse +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-2.83464 1.04143e-15 1.04144e-15 2.83466 320.315 660.472] 1.57079 4.71239 0 ellipse +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[2.83463 0 0 -5.66931 317.48 663.307] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[42.5197 0 0 -56.6929 198.425 793.701] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +212.598 793.701 m +212.598 745.512 l +198.425 745.512 l +S +[-5.66928 0 0 2.83466 240.945 782.362] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +212.598 782.362 m +240.945 782.362 l +238.11 785.197 l +212.598 785.197 l +212.598 782.362 l +closepath +0.5 0.5 0.5 rgb +F +212.598 782.362 m +240.945 782.362 l +238.11 785.197 l +212.598 785.197 l +212.598 782.362 l +0 0 0 rgb +0.992126 w +2 j +S +[-5.66928 0 0 2.83466 240.945 779.528] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +212.598 779.528 m +240.945 779.528 l +238.11 782.362 l +212.598 782.362 l +212.598 779.528 l +closepath +0.5 0.5 0.5 rgb +F +212.598 779.528 m +240.945 779.528 l +238.11 782.362 l +212.598 782.362 l +212.598 779.528 l +0 0 0 rgb +0.992126 w +2 j +S +[-5.66928 0 0 2.83466 240.945 776.693] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +212.598 776.693 m +240.945 776.693 l +238.11 779.528 l +212.598 779.528 l +212.598 776.693 l +closepath +0.5 0.5 0.5 rgb +F +212.598 776.693 m +240.945 776.693 l +238.11 779.528 l +212.598 779.528 l +212.598 776.693 l +0 0 0 rgb +0.992126 w +2 j +S +[2.83464 0 0 -2.83466 204.094 788.031] 1.57079 4.71239 0 ellipse +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-2.83464 1.04143e-15 1.04144e-15 2.83466 206.929 788.031] 1.57079 4.71239 0 ellipse +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[2.83463 0 0 -5.66931 204.094 790.866] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[42.5197 0 0 -56.6929 198.425 666.142] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +212.598 666.142 m +212.598 617.953 l +198.425 617.953 l +S +[-5.66928 0 0 2.83466 240.945 654.803] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +212.598 654.803 m +240.945 654.803 l +238.11 657.638 l +212.598 657.638 l +212.598 654.803 l +closepath +0.5 0.5 0.5 rgb +F +212.598 654.803 m +240.945 654.803 l +238.11 657.638 l +212.598 657.638 l +212.598 654.803 l +0 0 0 rgb +0.992126 w +2 j +S +[-5.66928 0 0 2.83466 240.945 651.969] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +212.598 651.969 m +240.945 651.969 l +238.11 654.803 l +212.598 654.803 l +212.598 651.969 l +closepath +0.5 0.5 0.5 rgb +F +212.598 651.969 m +240.945 651.969 l +238.11 654.803 l +212.598 654.803 l +212.598 651.969 l +0 0 0 rgb +0.992126 w +2 j +S +[-5.66928 0 0 2.83466 240.945 649.134] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +212.598 649.134 m +240.945 649.134 l +238.11 651.969 l +212.598 651.969 l +212.598 649.134 l +closepath +0.5 0.5 0.5 rgb +F +212.598 649.134 m +240.945 649.134 l +238.11 651.969 l +212.598 651.969 l +212.598 649.134 l +0 0 0 rgb +0.992126 w +2 j +S +[2.83464 0 0 -2.83466 204.094 660.472] 1.57079 4.71239 0 ellipse +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-2.83464 1.04143e-15 1.04144e-15 2.83466 206.929 660.472] 1.57079 4.71239 0 ellipse +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[2.83463 0 0 -5.66931 204.094 663.307] rect +gsave +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +/Times-Roman 11 sf +(Node1) +205 725 T +(Node1) +205 597 T +(Node2) +319 725 T +(Node2) +319 597 T +(heartbeat) +257 781 T +newpath +306.142 776.693 m +246.614 776.693 l +S +pusht +246.614 776.693 translate +180 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +334.489 799.371 m +334.489 810.71 l +396.851 810.71 l +396.851 799.371 l +0.992126 w +S +pusht +334.489 799.371 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +pusht +396.851 799.371 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +218.268 671.812 m +218.268 683.151 l +396.851 683.151 l +396.851 671.812 l +S +pusht +218.268 671.812 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +pusht +396.851 671.812 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +[8.50394 0 0 -8.50394 195.591 813.545] 3.1416 4.71239 0 ellipse +0.283465 w +S +[-3.8147e-05 -8.50394 -8.50394 3.8147e-05 422.363 813.545] 3.1416 4.71239 0 ellipse +S +[-8.50394 0.000190735 0.000190735 8.50394 422.363 725.67] 3.1416 4.71239 0 ellipse +S +[0.000160218 8.50394 8.50394 -0.000160218 195.591 725.67] 3.1416 4.71239 0 ellipse +S +newpath +187.087 813.545 m +187.087 725.67 l +S +newpath +430.867 813.545 m +430.867 725.67 l +S +newpath +195.591 822.049 m +422.363 822.049 l +S +newpath +195.591 717.166 m +422.363 717.166 l +S +[8.50394 0 0 -8.50394 195.591 685.985] 3.1416 4.71239 0 ellipse +S +[-3.8147e-05 -8.50394 -8.50394 3.8147e-05 422.363 685.985] 3.1416 4.71239 0 ellipse +S +[-8.50394 0.000190735 0.000190735 8.50394 422.363 598.111] 3.1416 4.71239 0 ellipse +S +[0.000160218 8.50394 8.50394 -0.000160218 195.591 598.111] 3.1416 4.71239 0 ellipse +S +newpath +187.087 685.985 m +187.087 598.111 l +S +newpath +430.867 685.985 m +430.867 598.111 l +S +newpath +195.591 694.489 m +422.363 694.489 l +S +newpath +195.591 589.607 m +422.363 589.607 l +S +(Client) +383 731 T +(Client) +383 603 T +newpath +181.418 765.356 m +141.732 751.182 141.732 668.977 170.079 654.804 c +0.76 0.707 1 rgb +11.3386 w +1 J +S +newpath +436.536 643.466 m +476.222 657.64 476.221 739.844 447.875 754.017 c +S +newpath +187.087 643.083 m +173.251 666.143 l +160.338 645.85 l +187.087 643.083 l +closepath +F +newpath +430.867 765.738 m +444.703 742.679 l +457.616 762.971 l +430.867 765.738 l +closepath +F +[14.1732 0 0 -11.3386 150.236 711.497] rect +1 1 1 rgb +F +[-14.1732 1.73572e-15 1.38857e-15 11.3386 467.717 700.159] rect +F +(Failover) +152 701 0 0 0 rgb +T +(Failback) +427 701 T +[26.9291 0 0 -26.9291 333.071 636.379] ellipse +4.8189 w +0 J +S +newpath +351.922 655.23 m +314.221 617.529 l +4.8189 w +1 j +S +[26.9291 0 0 -26.9291 333.071 636.379] ellipse +1 0 0 rgb +4.25197 w +0 j +S +newpath +351.922 655.23 m +314.221 617.529 l +1 j +S +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 382 2095 a + currentpoint currentpoint translate 1 0.81702 div 1 0.81702 div scale +neg exch neg exch translate + 382 2095 a 785 2291 a Fp(Abbildung)i(2.1:)40 +b(prinzipielle)32 b(F)-8 b(unktion)32 b(eines)e(HA-Clusters)382 +2566 y Fo(2.3.2)112 b(HA-Cluster)382 2787 y Fp(Das)35 +b(Prinzip,)k(nac)m(h)e(dem)f(die)g(hier)g(b)s(espro)s(c)m(henen)h +(HA-Cluster)f(arb)s(eiten,)i(ist)d(der)382 2900 y(sogenann)m(te)h(F)-8 +b(ailo)m(v)m(er.)55 b(Dab)s(ei)34 b(\374b)s(ernimm)m(t)i(ein)f(Knoten)g +(im)g(Cluster)g(die)f(gesam)m(te)382 3013 y(Arb)s(eit)e(des)g +(Clusters.)47 b(Die)32 b(einzige)i(Aufgab)s(e)e(des)g(v)m(erbleib)s +(enden)i(Knotens)f(ist)f(es,)382 3126 y(st\344ndig)38 +b(zu)f(\374b)s(erpr\374fen,)j(ob)e(der)f(aktiv)m(e)h(Knoten)g(no)s(c)m +(h)g(funktioniert.)63 b(Wird)37 b(der)382 3239 y(Ausfall)h(des)h(aktiv) +m(en)g(Knotens)h(festgestellt,)h(wird)e(die)h(Arb)s(eit)e(des)h +(Clusters)g(v)m(on)382 3352 y(n)m(un)i(an)g(durc)m(h)h(den)f(v)m +(erbleib)s(enden)h(Knoten)f(\374b)s(ernommen.)73 b(In)40 +b(Abbildung)h(2.1)382 3465 y(sind)30 b(diese)h(V)-8 b(org\344nge)31 +b(graphisc)m(h)h(dargestellt.)382 3627 y(HA-Cluster)c(w)m(erden)h +(eingesetzt,)g(um)g(geplan)m(te)g(Un)m(terbrec)m(h)m(ungen)i(und)e +(\(nic)m(h)m(t)g(ge-)382 3740 y(plan)m(te\))35 b(Ausf\344lle)f +(abzufangen.)53 b(Ein)34 b(Punkt,)i(der)e(zur)g(Beliebtheit)i(dieser)e +(Cluster)382 3853 y(sic)m(her)f(b)s(eigetragen)h(hat,)f(ist,)g(da\377)g +(nic)m(h)m(t)h(n)m(ur)f(Ausf\344lle)f(v)m(on)h(Hardw)m(arek)m(omp)s +(onen-)382 3966 y(ten,)g(sondern)g(auc)m(h)h(viele)e(Ausf\344lle)g(auf) +h(Grund)g(v)m(on)f(F)-8 b(ehlern)34 b(in)f(der)f(Soft)m(w)m(are)j +(f\374r)382 4079 y(den)c(An)m(w)m(ender)h(transparen)m(t)g(w)m(erden.) +382 4242 y(Die)f(Wirkung)g(v)m(on)h(Soft)m(w)m(are-F)-8 +b(ehler)1704 4209 y Fg(1)1777 4242 y Fp(die)31 b(n)m(ur)h(un)m(ter)g +(ganz)g(b)s(estimm)m(ten)g(Umst\344n-)382 4355 y(den)g(ein)m(treten,)i +(so)s(da\377)d(es)g(fast)g(nic)m(h)m(t)j(m\366glic)m(h)f(ist,)f(diese)f +(F)-8 b(ehler)33 b(zu)f(repro)s(duzieren)382 4468 y(und)27 +b(zu)f(b)s(eheb)s(en,)h(k)m(\366nnen)g(auf)g(Grund)f(genau)h(dieser)g +(Eigensc)m(haft)g(v)m(on)g(einem)g(HA-)382 4581 y(Cluster,)42 +b(der)e(die)g(Soft)m(w)m(are)h(ja)e(einfac)m(h)h(no)s(c)m(h)g(einmal)h +(laufen)e(l\344\377t,)k(ausgeglic)m(hen)382 4694 y(w)m(erden.)c(Bei)22 +b(der)g(erneuten)i(Ausf\374hrung)e(der)g(Soft)m(w)m(are)i(ist)e(es)f +(sehr)h(w)m(ahrsc)m(heinlic)m(h,)382 4806 y(da\377)32 +b(P)m(ak)m(ete)i(v)m(om)f(Netzw)m(erk)g(in)f(einer)h(anderen)g +(Reihenfolge)g(empfangen)g(w)m(erden,)382 4919 y(und)e(da\377)f(daher)i +(der)e(F)-8 b(ehler)32 b(nic)m(h)m(t)g(auftritt.)41 b([P\03498)q(,)30 +b(Seite)h(391])p 382 4981 1196 4 v 486 5035 a Ff(1)520 +5066 y Fe(P\034ster)38 b(b)r(ezeic)n(hnet)f(diese)h(F)-6 +b(ehler)37 b(als)h(Heisen)n(bugs.)70 b(Streng)37 b(genommen)e(sind)i(n) +n(ur)g(solc)n(he)382 5158 y(F)-6 b(ehler,)39 b(die)e(b)r(eim)f +(\022Betrac)n(h)n(ten\021,)j(also)f(dem)d(Ausf\374hren)g(mit)h(einem)g +(Debugger)g(v)n(ersc)n(h)n(winden)382 5249 y(o)r(der)26 +b(ersc)n(heinen,)g(Heisen)n(bugs.)1831 5622 y Fp(11)p +eop +%%Page: 12 14 +12 13 bop 382 264 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)439 +b(2.3.)71 b(HOHE)30 b(VERF\334GBARKEIT)p 382 301 2989 +4 v 382 2604 a + currentpoint currentpoint translate 0.81888 0.81888 scale neg exch +neg exch translate + 382 2604 a @beginspecial 64 @llx 469 @lly +502 @urx 785 @ury 4380 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//shared-disk.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Tue Apr 25 12:28:50 2000 +%%Title: shared-disk.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 64 469 502 785 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +[141.733 0 0 -34.0158 70.8662 694.489] rect +0.848 0.835 0.949 rgb +F +[141.733 0 0 -34.0158 354.331 694.489] rect +F +[62.3623 0 0 -36.8505 70.8662 660.473] rect +F +[62.3623 0 0 -42.5198 433.701 660.473] rect +F +newpath +225.95 493.23 m +228.784 490.395 l +251.462 490.395 l +254.296 493.23 l +closepath +0.8 0.8 0.8 rgb +F +225.95 493.23 m +228.784 490.395 l +251.462 490.395 l +254.296 493.23 l +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[34.0158 0 0 -28.3465 223.115 521.576] rect +gsave +0.8 0.8 0.8 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[28.3465 0 0 -22.6772 225.95 518.742] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[39.6282 -2.12668 -3.43822 -11.171 220.613 488.616] rect +S +newpath +221.623 486.29 m +222.755 486.229 l +S +newpath +219.56 479.587 m +220.692 479.527 l +S +newpath +220.076 481.263 m +221.208 481.202 l +S +newpath +220.592 482.939 m +221.724 482.878 l +S +newpath +221.107 484.614 m +222.24 484.553 l +S +newpath +223.321 486.199 m +224.454 486.138 l +S +newpath +221.259 479.496 m +222.391 479.435 l +S +newpath +221.774 481.172 m +222.906 481.111 l +S +newpath +222.29 482.847 m +223.422 482.787 l +S +newpath +222.806 484.523 m +223.938 484.462 l +S +newpath +225.02 486.108 m +226.152 486.047 l +S +newpath +222.957 479.405 m +224.089 479.344 l +S +newpath +223.473 481.081 m +224.605 481.02 l +S +newpath +223.988 482.756 m +225.121 482.695 l +S +newpath +224.504 484.432 m +225.636 484.371 l +S +newpath +226.718 486.016 m +227.85 485.956 l +S +newpath +224.655 479.314 m +225.787 479.253 l +S +newpath +225.171 480.989 m +226.303 480.929 l +S +newpath +225.687 482.665 m +226.819 482.604 l +S +newpath +226.202 484.341 m +227.335 484.28 l +S +newpath +228.417 485.925 m +229.549 485.864 l +S +newpath +226.354 479.223 m +227.486 479.162 l +S +newpath +226.869 480.898 m +228.002 480.838 l +S +newpath +227.385 482.574 m +228.517 482.513 l +S +newpath +227.901 484.25 m +229.033 484.189 l +S +newpath +230.115 485.834 m +231.247 485.773 l +S +newpath +228.052 479.132 m +229.184 479.071 l +S +newpath +228.568 480.807 m +229.7 480.746 l +S +newpath +229.083 482.483 m +230.216 482.422 l +S +newpath +229.599 484.158 m +230.731 484.098 l +S +newpath +231.813 485.743 m +232.945 485.682 l +S +newpath +229.75 479.04 m +230.883 478.98 l +S +newpath +230.266 480.716 m +231.398 480.655 l +S +newpath +230.782 482.392 m +231.914 482.331 l +S +newpath +231.297 484.067 m +232.43 484.007 l +S +newpath +233.512 485.652 m +234.644 485.591 l +S +newpath +231.449 478.949 m +232.581 478.889 l +S +newpath +231.964 480.625 m +233.097 480.564 l +S +newpath +232.48 482.301 m +233.612 482.24 l +S +newpath +232.996 483.976 m +234.128 483.915 l +S +newpath +235.21 485.561 m +236.342 485.5 l +S +newpath +233.147 478.858 m +234.279 478.797 l +S +newpath +233.663 480.534 m +234.795 480.473 l +S +newpath +234.178 482.209 m +235.311 482.149 l +S +newpath +234.694 483.885 m +235.826 483.824 l +S +newpath +236.908 485.47 m +238.041 485.409 l +S +newpath +234.845 478.767 m +235.978 478.706 l +S +newpath +235.361 480.443 m +236.493 480.382 l +S +newpath +235.877 482.118 m +237.009 482.057 l +S +newpath +236.393 483.794 m +237.525 483.733 l +S +newpath +238.607 485.378 m +239.739 485.318 l +S +newpath +236.544 478.676 m +237.676 478.615 l +S +newpath +237.059 480.351 m +238.192 480.291 l +S +newpath +237.575 482.027 m +238.707 481.966 l +S +newpath +238.091 483.703 m +239.223 483.642 l +S +newpath +240.305 485.287 m +241.437 485.226 l +S +newpath +238.242 478.585 m +239.374 478.524 l +S +newpath +238.758 480.26 m +239.89 480.2 l +S +newpath +239.274 481.936 m +240.406 481.875 l +S +newpath +239.789 483.612 m +240.921 483.551 l +S +newpath +242.003 485.196 m +243.136 485.135 l +S +newpath +251.061 484.71 m +252.193 484.649 l +S +newpath +239.94 478.494 m +241.073 478.433 l +S +newpath +248.998 478.007 m +250.13 477.947 l +S +newpath +240.456 480.169 m +241.588 480.108 l +S +newpath +249.514 479.683 m +250.646 479.622 l +S +newpath +240.972 481.845 m +242.104 481.784 l +S +newpath +250.03 481.359 m +251.162 481.298 l +S +newpath +241.488 483.52 m +242.62 483.46 l +S +newpath +250.545 483.034 m +251.678 482.974 l +S +newpath +243.702 485.105 m +244.834 485.044 l +S +newpath +252.76 484.619 m +253.892 484.558 l +S +newpath +241.639 478.402 m +242.771 478.342 l +S +newpath +250.697 477.916 m +251.829 477.856 l +S +newpath +242.154 480.078 m +243.287 480.017 l +S +newpath +251.212 479.592 m +252.345 479.531 l +S +newpath +242.67 481.754 m +243.802 481.693 l +S +newpath +251.728 481.268 m +252.86 481.207 l +S +newpath +243.186 483.429 m +244.318 483.369 l +S +newpath +252.244 482.943 m +253.376 482.882 l +S +newpath +245.4 485.014 m +246.532 484.953 l +S +newpath +254.458 484.528 m +255.59 484.467 l +S +newpath +243.337 478.311 m +244.469 478.251 l +S +newpath +252.395 477.825 m +253.527 477.764 l +S +newpath +243.853 479.987 m +244.985 479.926 l +S +newpath +252.911 479.501 m +254.043 479.44 l +S +newpath +244.369 481.663 m +245.501 481.602 l +S +newpath +253.426 481.176 m +254.559 481.116 l +S +newpath +244.884 483.338 m +246.017 483.277 l +S +newpath +253.942 482.852 m +255.074 482.791 l +S +newpath +247.098 484.923 m +248.231 484.862 l +S +newpath +256.156 484.437 m +257.288 484.376 l +S +newpath +245.035 478.22 m +246.168 478.159 l +S +newpath +254.093 477.734 m +255.226 477.673 l +S +newpath +245.551 479.896 m +246.683 479.835 l +S +newpath +254.609 479.41 m +255.741 479.349 l +S +newpath +246.067 481.571 m +247.199 481.511 l +S +newpath +255.125 481.085 m +256.257 481.025 l +S +newpath +246.583 483.247 m +247.715 483.186 l +S +newpath +255.641 482.761 m +256.773 482.7 l +S +newpath +308.701 493.23 m +311.535 490.395 l +334.213 490.395 l +337.047 493.23 l +closepath +0.8 0.8 0.8 rgb +F +308.701 493.23 m +311.535 490.395 l +334.213 490.395 l +337.047 493.23 l +0 0 0 rgb +S +[34.0158 0 0 -28.3465 305.866 521.576] rect +gsave +0.8 0.8 0.8 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[28.3465 0 0 -22.6772 308.701 518.742] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[39.6282 -2.12668 -3.43822 -11.171 303.364 488.616] rect +S +newpath +304.374 486.29 m +305.506 486.229 l +S +newpath +302.311 479.587 m +303.443 479.527 l +S +newpath +302.827 481.263 m +303.959 481.202 l +S +newpath +303.343 482.939 m +304.475 482.878 l +S +newpath +303.858 484.614 m +304.991 484.553 l +S +newpath +306.072 486.199 m +307.205 486.138 l +S +newpath +304.01 479.496 m +305.142 479.435 l +S +newpath +304.525 481.172 m +305.657 481.111 l +S +newpath +305.041 482.847 m +306.173 482.787 l +S +newpath +305.557 484.523 m +306.689 484.462 l +S +newpath +307.771 486.108 m +308.903 486.047 l +S +newpath +305.708 479.405 m +306.84 479.344 l +S +newpath +306.224 481.081 m +307.356 481.02 l +S +newpath +306.739 482.756 m +307.872 482.695 l +S +newpath +307.255 484.432 m +308.387 484.371 l +S +newpath +309.469 486.016 m +310.601 485.956 l +S +newpath +307.406 479.314 m +308.538 479.253 l +S +newpath +307.922 480.989 m +309.054 480.929 l +S +newpath +308.438 482.665 m +309.57 482.604 l +S +newpath +308.953 484.341 m +310.086 484.28 l +S +newpath +311.168 485.925 m +312.3 485.864 l +S +newpath +309.105 479.223 m +310.237 479.162 l +S +newpath +309.62 480.898 m +310.753 480.838 l +S +newpath +310.136 482.574 m +311.268 482.513 l +S +newpath +310.652 484.25 m +311.784 484.189 l +S +newpath +312.866 485.834 m +313.998 485.773 l +S +newpath +310.803 479.132 m +311.935 479.071 l +S +newpath +311.319 480.807 m +312.451 480.746 l +S +newpath +311.834 482.483 m +312.967 482.422 l +S +newpath +312.35 484.158 m +313.482 484.098 l +S +newpath +314.564 485.743 m +315.696 485.682 l +S +newpath +312.501 479.04 m +313.634 478.98 l +S +newpath +313.017 480.716 m +314.149 480.655 l +S +newpath +313.533 482.392 m +314.665 482.331 l +S +newpath +314.048 484.067 m +315.181 484.007 l +S +newpath +316.263 485.652 m +317.395 485.591 l +S +newpath +314.2 478.949 m +315.332 478.889 l +S +newpath +314.715 480.625 m +315.848 480.564 l +S +newpath +315.231 482.301 m +316.363 482.24 l +S +newpath +315.747 483.976 m +316.879 483.915 l +S +newpath +317.961 485.561 m +319.093 485.5 l +S +newpath +315.898 478.858 m +317.03 478.797 l +S +newpath +316.414 480.534 m +317.546 480.473 l +S +newpath +316.929 482.209 m +318.062 482.149 l +S +newpath +317.445 483.885 m +318.577 483.824 l +S +newpath +319.659 485.47 m +320.792 485.409 l +S +newpath +317.596 478.767 m +318.729 478.706 l +S +newpath +318.112 480.443 m +319.244 480.382 l +S +newpath +318.628 482.118 m +319.76 482.057 l +S +newpath +319.144 483.794 m +320.276 483.733 l +S +newpath +321.358 485.378 m +322.49 485.318 l +S +newpath +319.295 478.676 m +320.427 478.615 l +S +newpath +319.81 480.351 m +320.943 480.291 l +S +newpath +320.326 482.027 m +321.458 481.966 l +S +newpath +320.842 483.703 m +321.974 483.642 l +S +newpath +323.056 485.287 m +324.188 485.226 l +S +newpath +320.993 478.585 m +322.125 478.524 l +S +newpath +321.509 480.26 m +322.641 480.2 l +S +newpath +322.025 481.936 m +323.157 481.875 l +S +newpath +322.54 483.612 m +323.672 483.551 l +S +newpath +324.754 485.196 m +325.887 485.135 l +S +newpath +333.812 484.71 m +334.944 484.649 l +S +newpath +322.691 478.494 m +323.824 478.433 l +S +newpath +331.749 478.007 m +332.881 477.947 l +S +newpath +323.207 480.169 m +324.339 480.108 l +S +newpath +332.265 479.683 m +333.397 479.622 l +S +newpath +323.723 481.845 m +324.855 481.784 l +S +newpath +332.781 481.359 m +333.913 481.298 l +S +newpath +324.239 483.52 m +325.371 483.46 l +S +newpath +333.296 483.034 m +334.429 482.974 l +S +newpath +326.453 485.105 m +327.585 485.044 l +S +newpath +335.511 484.619 m +336.643 484.558 l +S +newpath +324.39 478.402 m +325.522 478.342 l +S +newpath +333.448 477.916 m +334.58 477.856 l +S +newpath +324.905 480.078 m +326.038 480.017 l +S +newpath +333.963 479.592 m +335.096 479.531 l +S +newpath +325.421 481.754 m +326.553 481.693 l +S +newpath +334.479 481.268 m +335.611 481.207 l +S +newpath +325.937 483.429 m +327.069 483.369 l +S +newpath +334.995 482.943 m +336.127 482.882 l +S +newpath +328.151 485.014 m +329.283 484.953 l +S +newpath +337.209 484.528 m +338.341 484.467 l +S +newpath +326.088 478.311 m +327.22 478.251 l +S +newpath +335.146 477.825 m +336.278 477.764 l +S +newpath +326.604 479.987 m +327.736 479.926 l +S +newpath +335.662 479.501 m +336.794 479.44 l +S +newpath +327.12 481.663 m +328.252 481.602 l +S +newpath +336.177 481.176 m +337.31 481.116 l +S +newpath +327.635 483.338 m +328.768 483.277 l +S +newpath +336.693 482.852 m +337.825 482.791 l +S +newpath +329.849 484.923 m +330.982 484.862 l +S +newpath +338.907 484.437 m +340.039 484.376 l +S +newpath +327.786 478.22 m +328.919 478.159 l +S +newpath +336.844 477.734 m +337.977 477.673 l +S +newpath +328.302 479.896 m +329.434 479.835 l +S +newpath +337.36 479.41 m +338.492 479.349 l +S +newpath +328.818 481.571 m +329.95 481.511 l +S +newpath +337.876 481.085 m +339.008 481.025 l +S +newpath +329.334 483.247 m +330.466 483.186 l +S +newpath +338.392 482.761 m +339.524 482.7 l +S +/Times-Roman 12 sf +(...) +274 515 T +(...) +[1.19434e-15 1 -1 1.19434e-15 100.839 735.074] T +(...) +[1.19434e-15 1 -1 1.19434e-15 469.344 735.074] T +newpath +223.937 643.466 m +218.268 637.796 l +232.441 623.623 l +274.961 623.623 l +283.465 615.119 l +291.969 623.623 l +1.98425 w +1 j +1 J +S +newpath +291.969 623.623 m +334.489 623.623 l +348.662 637.796 l +342.993 643.466 l +S +(HP-UX) +122 674 T +(HP-UX) +405 674 T +newpath +168.378 595.276 m +165.544 595.276 l +165.544 592.442 l +168.378 592.442 l +1 w +0 j +0 J +S +newpath +158.74 600.945 m +155.906 600.945 l +155.906 598.111 l +158.74 598.111 l +S +newpath +158.74 586.772 m +167.244 586.772 l +167.244 581.103 l +192.757 581.103 l +192.757 586.772 l +212.598 586.772 l +212.598 603.78 l +158.74 603.78 l +158.74 609.449 l +158.74 581.103 l +closepath +1 1 1 rgb +F +158.74 586.772 m +167.244 586.772 l +167.244 581.103 l +192.757 581.103 l +192.757 586.772 l +212.598 586.772 l +212.598 603.78 l +158.74 603.78 l +158.74 609.449 l +158.74 581.103 l +0 0 0 rgb +S +newpath +170.078 586.772 m +170.078 581.103 l +S +newpath +175.748 586.772 m +175.748 581.103 l +S +newpath +172.914 586.772 m +172.914 581.103 l +S +newpath +178.583 586.772 m +178.583 581.103 l +S +newpath +181.418 586.772 m +181.418 581.103 l +S +newpath +184.253 586.772 m +184.253 581.103 l +S +newpath +187.087 586.772 m +187.087 581.103 l +S +newpath +189.921 586.772 m +189.921 581.103 l +S +(NIC) +172 592 T +newpath +366.803 595.276 m +363.969 595.276 l +363.969 592.442 l +366.803 592.442 l +S +newpath +357.165 600.945 m +354.331 600.945 l +354.331 598.111 l +357.165 598.111 l +S +newpath +357.165 586.772 m +365.669 586.772 l +365.669 581.103 l +391.182 581.103 l +391.182 586.772 l +411.023 586.772 l +411.023 603.78 l +357.165 603.78 l +357.165 609.449 l +357.165 581.103 l +closepath +1 1 1 rgb +F +357.165 586.772 m +365.669 586.772 l +365.669 581.103 l +391.182 581.103 l +391.182 586.772 l +411.023 586.772 l +411.023 603.78 l +357.165 603.78 l +357.165 609.449 l +357.165 581.103 l +0 0 0 rgb +S +newpath +368.503 586.772 m +368.503 581.103 l +S +newpath +374.173 586.772 m +374.173 581.103 l +S +newpath +371.339 586.772 m +371.339 581.103 l +S +newpath +377.008 586.772 m +377.008 581.103 l +S +newpath +379.843 586.772 m +379.843 581.103 l +S +newpath +382.678 586.772 m +382.678 581.103 l +S +newpath +385.512 586.772 m +385.512 581.103 l +S +newpath +388.346 586.772 m +388.346 581.103 l +S +(NIC) +371 592 T +[56.693 0 0 -28.3465 70.8662 728.505] rect +S +[56.693 0 0 -28.3465 70.8662 779.529] rect +S +[56.693 0 0 -28.3465 439.371 779.529] rect +S +[56.693 0 0 -28.3465 439.371 728.505] rect +S +[56.693 0 0 -28.3465 155.906 728.505] rect +S +[56.693 0 0 -28.3465 354.331 728.505] rect +S +(Package) +79 711 T +(Package) +79 762 T +(Package) +447 762 T +(Package) +447 711 T +(MC/S) +368 711 T +newpath +238.111 527.245 m +238.111 538.583 l +323.15 538.583 l +323.15 527.245 l +S +newpath +323.15 538.583 m +377.008 538.583 l +377.008 569.765 l +S +newpath +238.111 538.583 m +178.583 538.583 l +178.583 569.765 l +S +(MC/S) +170 711 T +[147.402 0 0 -204.095 351.497 782.363] rect +0.283465 w +[1.41733 0.283465 0.283465 0.283465 ] 0 d +S +[147.402 0 0 -204.095 68.0316 782.363] rect +S +[65.197 0 0 -34.0158 252.284 612.284] rect +S +[-28.3465 0 0 7.08663 283.465 588.19] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 283.465 595.277] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 283.465 602.363] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +/Times-Roman 12 sf +(Disk) +272 598 T +[-28.3465 0 0 7.08663 99.2128 588.19] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 99.2128 595.277] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 99.2128 602.363] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +/Times-Roman 12 sf +(Disk) +87 598 T +[-28.3465 0 0 7.08663 467.717 588.19] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 467.717 595.277] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 467.717 602.363] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +/Times-Roman 12 sf +(Disk) +456 598 T +newpath +158.741 643.465 m +155.906 643.465 l +155.906 632.127 l +158.741 632.127 l +1 w +S +newpath +158.741 629.292 m +167.245 629.292 l +167.245 623.623 l +192.757 623.623 l +192.757 629.292 l +212.599 629.292 l +212.599 646.3 l +158.741 646.3 l +158.741 651.969 l +158.741 623.623 l +S +newpath +170.079 629.292 m +170.079 623.623 l +S +newpath +175.749 629.292 m +175.749 623.623 l +S +newpath +172.914 629.292 m +172.914 623.623 l +S +newpath +178.583 629.292 m +178.583 623.623 l +S +newpath +181.418 629.292 m +181.418 623.623 l +S +newpath +184.253 629.292 m +184.253 623.623 l +S +newpath +187.087 629.292 m +187.087 623.623 l +S +newpath +189.922 629.292 m +189.922 623.623 l +S +(SCSI) +170 635 T +newpath +357.166 643.465 m +354.331 643.465 l +354.331 632.127 l +357.166 632.127 l +S +newpath +357.166 629.292 m +365.67 629.292 l +365.67 623.623 l +391.182 623.623 l +391.182 629.292 l +411.024 629.292 l +411.024 646.3 l +357.166 646.3 l +357.166 651.969 l +357.166 623.623 l +S +newpath +368.504 629.292 m +368.504 623.623 l +S +newpath +374.174 629.292 m +374.174 623.623 l +S +newpath +371.339 629.292 m +371.339 623.623 l +S +newpath +377.008 629.292 m +377.008 623.623 l +S +newpath +379.843 629.292 m +379.843 623.623 l +S +newpath +382.678 629.292 m +382.678 623.623 l +S +newpath +385.512 629.292 m +385.512 623.623 l +S +newpath +388.347 629.292 m +388.347 623.623 l +S +(SCSI) +368 635 T +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 382 2604 a + currentpoint currentpoint translate 1 0.81888 div 1 0.81888 div scale +neg exch neg exch translate + 382 2604 a 1070 2800 a Fp(Abbildung)h(2.2:)41 +b(HP)31 b(Beispielk)m(on\034guration)382 3075 y(Das)c(Prinzip)h(des)f +(F)-8 b(ailo)m(v)m(ers)29 b(ist)e(auc)m(h)h(das)f(Grundprinzip)i(der)e +(Clusterl\366sungen)i(f\374r)382 3188 y(Lin)m(ux)i(die)g(in)f(Kapitel)i +(6)e(v)m(orgestellt)i(w)m(erden.)382 3481 y Fo(2.3.3)112 +b(Beispielk)m(on\034guration)382 3702 y Fp(In)43 b(diesem)g(Absc)m +(hnitt)h(wird)g(eine)f(Beispielk)m(on\034guration)j(v)m(on)e(HP)f([W)-8 +b(ey96)q(])43 b(b)s(e-)382 3815 y(trac)m(h)m(tet,)h(die)c(eb)s(enfalls) +g(nac)m(h)h(dem)f(Prinzip)h(des)e(F)-8 b(ailo)m(v)m(ers)42 +b(arb)s(eitet.)69 b(Sie)40 b(ist)f(in)382 3928 y(Abbildung)h(2.2)f(sc)m +(hematisc)m(h)h(dargestellt.)66 b(HP)39 b(wurde)h(zuf\344llig)f(als)f +(Beispiel)h(ge-)382 4041 y(w)m(\344hlt,)32 b(ganz)f(\344hnlic)m(he)h +(Cluster)f(sind)f(auc)m(h)h(v)m(on)g(anderen)h(Herstellern)f +(erh\344ltlic)m(h.)382 4204 y(Die)i(lok)-5 b(alen)33 +b(F)-8 b(estplatten)34 b(der)f(Knoten)h(w)m(erden)g(f\374r)f(das)g +(Betriebssystem,)g(die)g(HA)382 4317 y(Soft)m(w)m(are)k(und)f(die)f +(Applik)-5 b(ationssoft)m(w)m(are)38 b(v)m(erw)m(endet.)57 +b(Die)36 b(Daten)g(der)f(Applik)-5 b(a-)382 4429 y(tionen)32 +b(hingegen)g(w)m(erden)h(auf)e(dem)h(v)m(on)f(b)s(eiden)h(Knoten)g(aus) +f(zug\344nglic)m(hen)j(F)-8 b(est-)382 4542 y(plattensystem)31 +b(\(shared)g(disk\))f(gesp)s(eic)m(hert.)382 4832 y Fn(2.3.3.1)103 +b(Shared)34 b(Disk)382 5054 y Fp(HP)f(realisiert)i(die)e(Shared)i(Disk) +d(mit)i(Hilfe)f(eines)h(SCSI-Busses.)49 b(Es)34 b(w)m(erden)g(zw)m(ei) +382 5167 y(SCSI-K)m(on)m(troller)c(an)d(einen)h(SCSI-Bus)f(angesc)m +(hlossen;)i(nat\374rlic)m(h)g(m)m(\374ssen)e(die)h(b)s(ei-)382 +5279 y(den)c(K)m(on)m(troller)i(auf)e(v)m(ersc)m(hiedene)h(SCSI-IDs)f +(k)m(on\034guriert)h(w)m(erden.)40 b(Die)24 b(heute)g(\374b-)382 +5392 y(lic)m(hen)j(SCSI-K)m(on)m(troller)i(hab)s(en)e(in)f(der)h(Regel) +f(b)s(ereits)g(aktiv)m(e)g(SCSI-T)-8 b(erminatoren)1831 +5622 y(12)p eop +%%Page: 13 15 +13 14 bop 382 264 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)439 +b(2.3.)71 b(HOHE)30 b(VERF\334GBARKEIT)p 382 301 2989 +4 v 382 539 a Fp(in)m(tegriert,)36 b(die)e(allerdings)h(in)f(diesem)g +(An)m(w)m(endungsfall)h(nic)m(h)m(t)g(v)m(erw)m(endet)h(w)m(erden)382 +652 y(k)m(\366nnen.)64 b(W)-8 b(enn)39 b(ein)g(Knoten)g(des)e(Clusters) +i(nic)m(h)m(t)g(in)f(Betrieb)h(ist,)h(ist)e(somit)g(der)382 +764 y(aktiv)m(e)h(T)-8 b(erminator)41 b(ohne)e(V)-8 b(ersorgung,)43 +b(und)c(der)g(gesam)m(te)h(SCSI-Bus)f(ist)f(w)m(egen)382 +877 y(fehlender)31 b(T)-8 b(ermination)33 b(un)m(brauc)m(h)m(bar.)44 +b(Daher)31 b(m)m(\374ssen)g(die)g(in)m(ternen)h(T)-8 +b(erminato-)382 990 y(ren)24 b(deaktiviert,)h(der)f(SCSI-Bus)f(v)m +(erl\344ngert)i(und)f(an)f(den)h(Enden)h(des)e(Busses)f(exter-)382 +1103 y(ne)34 b(T)-8 b(erminatoren)36 b(angesc)m(hlossen)f(w)m(erden.)51 +b(Viele)34 b(SCSI-K)m(on)m(troller)j(hab)s(en)d(einen)382 +1216 y(externen)f(und)g(einen)g(in)m(ternen)h(Ansc)m(hlu\377.)48 +b(W\374rde)33 b(man)g(den)f(externen)i(T)-8 b(ermina-)382 +1329 y(tor)32 b(am)g(in)m(ternen)i(Ansc)m(hlu\377)f(des)e(SCSI-K)m(on)m +(trollers)k(an)m(bringen,)f(k)m(\366nn)m(te)g(man)e(den)382 +1442 y(Knoten)25 b(nic)m(h)m(t)g(v)m(om)f(SCSI-Bus)g(trennen.)39 +b(Daher)24 b(ist)g(es)f(un)m(b)s(edingt)i(not)m(w)m(endig,)j(die-)382 +1555 y(sen)g(T)-8 b(erminator)31 b(am)d(externen)h(Bus)f(anzubringen.) +42 b(Daf\374r)28 b(w)m(erden)i(SCSI-Y-Kab)s(el)382 1668 +y(b)s(en\366tigt.)382 1819 y(Diese)23 b(Kab)s(el)h(sind)g(\026)f +(au\377er)i(b)s(ei)e(den)h(HA-System-An)m(bietern)h(\026)e(fast)g(nic)m +(h)m(t)j(erh\344lt-)382 1932 y(lic)m(h.)55 b(Eine)36 +b(Umfrage)f(auf)f(der)i(Lin)m(ux-HA)f(Mailingliste)h(hat)f(ergeb)s(en,) +i(da\377)e(es)g(n)m(ur)382 2045 y(einen)c(einzigen)g(H\344ndler)f(in)g +(Europa)i(gibt,)e(der)h(diese)f(Kab)s(el)g(in)g(seinem)g(Sortimen)m(t) +382 2158 y(hat.)382 2310 y(T)-8 b(ritt)38 b(ein)g(Problem)h(auf)e(dem)h +(SCSI-Bus)f(auf,)i(wird)f(z.B.)g(der)g(T)-8 b(erminator)39 +b(v)m(erse-)382 2423 y(hen)m(tlic)m(h)32 b(en)m(tfern)m(t,)h(so)d(sind) +g(die)h(Zugri\033sw)m(ege)h(b)s(eider)e(Knoten)i(un)m(terbro)s(c)m +(hen.)43 b(Ein)382 2535 y(Shared)32 b(SCSI-Bus)f(ist)g(ein)h(SPOF)g +(\(single)g(p)s(oin)m(t)f(of)g(failure\))h(f\374r)f(den)h(ganzen)g +(Clu-)382 2648 y(ster.)68 b(Daher)41 b(wird)f(b)s(ei)f(den)h(Clustern)h +(v)m(on)f(HP)f(der)h(Shared)h(SCSI-Bus)f(dopp)s(elt)382 +2761 y(ausgef\374hrt.)79 b(F)-8 b(alls)43 b(eine)g(normale)h(SCSI-F)-8 +b(estplatte)45 b(am)e(Shared)h(SCSI-Bus)f(an-)382 2874 +y(gesc)m(hlossen)c(ist,)g(wird)g(diese)f(eb)s(enfalls)f(dopp)s(elt)i +(ausgef\374hrt,)i(und)d(zwisc)m(hen)h(den)382 2987 y(b)s(eiden)31 +b(F)-8 b(estplatten)32 b(sorgt)e(MirrorDisk/UX)g(f\374r)g(die)h +(Datenspiegelung.)382 3139 y(Neb)s(en)26 b(HP)g(v)m(erw)m(enden)i(auc)m +(h)f(andere)g(An)m(bieter)h(v)m(on)e(Unix-basierten)h(HA-Cluster-)382 +3252 y(L\366sungen)e(einen)g(Shared)g(SCSI-Bus,)g(sogar)f(im)h(Lin)m +(ux-HA-HO)m(WTO)g([Mil98)q(])f(wird)382 3365 y(die)31 +b(V)-8 b(erw)m(endung)32 b(dieses)e(Busses)g(v)m(orgesc)m(hlagen.)382 +3516 y(Shared)i(Disks)e(k)m(\366nnen)j(neb)s(en)e(SCSI)g(auc)m(h)i(mit) +e(SSA,)h(Fib)s(er)f(Chanel)h(\(Switc)m(h)h(und)382 3629 +y(Arbitrated)42 b(Lo)s(op\),)i(Digitals)d(Star)h(Coupler)g(und)f(IBMs)f +(S/390)i(ESCON)g(imple-)382 3742 y(men)m(tiert)32 b(w)m(erden.)42 +b([P\03498)q(])382 4016 y Fn(2.3.3.2)103 b(Soft)m(w)m(are)382 +4226 y Fp(In)29 b(der)h(Clusterl\366sung)h(v)m(on)e(HP)h(\374b)s +(ernimm)m(t)h(MC/ServiceGuard)g(das)f(Starten)g(der)382 +4339 y(ho)s(c)m(h)m(v)m(erf\374gbaren)38 b(Applik)-5 +b(ationen.)58 b(F\374r)35 b(jede)h(ho)s(c)m(h)m(v)m(erf\374gbare)i +(Applik)-5 b(ation)36 b(m)m(u\377)382 4452 y(ein)24 b(sogenann)m(tes)i +(P)m(ac)m(k)-5 b(age)26 b(erstellt)f(w)m(erden.)40 b(Dieses)24 +b(P)m(ac)m(k)-5 b(age)26 b(en)m(th\344lt)g(Angab)s(en)e(zu)382 +4565 y(den)30 b(b)s(en\366tigten)h(Ressourcen)f(der)g(Applik)-5 +b(ation)30 b(so)m(wie)g(Shell-Skripts)h(zum)f(Starten)382 +4678 y(und)42 b(Stopp)s(en)g(der)g(Applik)-5 b(ation.)75 +b(Zu)41 b(den)h(erw)m(\344hn)m(ten)i(Ressourcen)e(z\344hlen)g(z.B.)382 +4790 y(IP-A)m(dressen,)31 b(Logic)g(V)-8 b(olumes)31 +b(und)g(Filesysteme.)382 4942 y(MC/ServiceGuard)42 b(l\344uft)g(auf)f +(allen)g(Knoten)h(des)f(Clusters.)73 b(Die)41 b(einzelnen)i(In-)382 +5055 y(stanzen)33 b(stehen)g(mit)h(Hilfe)e(v)m(on)h(Heartb)s(eat-P)m +(ak)m(eten,)j(die)e(\374b)s(er)e(ein)h(gemeinsames)382 +5168 y(Ethernet-Lan)40 b(v)m(ersc)m(hic)m(kt)f(w)m(erden,)i +(miteinander)f(in)d(V)-8 b(erbindung.)64 b(Reagiert)38 +b(ein)382 5281 y(System)c(auf)g(die)g(Heartb)s(eat-P)m(ak)m(ete)j(nic)m +(h)m(t)f(mehr,)f(wird)g(es)f(v)m(om)g(anderen)h(System)382 +5394 y(als)30 b(ausgefallen)h(b)s(etrac)m(h)m(tet.)1831 +5622 y(13)p eop +%%Page: 14 16 +14 15 bop 382 264 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)439 +b(2.3.)71 b(HOHE)30 b(VERF\334GBARKEIT)p 382 301 2989 +4 v 382 539 a Fp(F)-8 b(alls)30 b(auf)f(dem)g(gerade)i(ausgefallenen)f +(System)f(Instanzen)h(v)m(on)g(P)m(ac)m(k)-5 b(ages)31 +b(gelaufen)382 652 y(sind,)45 b(wird)e(n)m(un)g(MC/ServiceGuard)g(die)g +(not)m(w)m(endigen)i(Ressourcen)d(einric)m(h)m(ten,)382 +764 y(z.B.)e(der)g(Netzw)m(erkk)-5 b(arte)41 b(die)g(en)m(tsprec)m +(hende)h(IP-A)m(dresse)e(zu)m(w)m(eisen,)k(das)c(SCSI-)382 +877 y(Ger\344t)35 b(auf)g(dem)g(Shared)h(SCSI-Bus)f(b)s(elegen,)h(die)g +(not)m(w)m(endigen)h(Filesysteme)e(an-)382 990 y(melden)i(und)f(sc)m +(hlie\377lic)m(h)i(die)e(Applik)-5 b(ation)36 b(erneut)h(starten.)57 +b(Laut)36 b(HP)g(dauert)h(so)382 1103 y(ein)e(Wiederanlauf)g(eines)f +(Soft)m(w)m(aresystems)i(45)e(Sekunden)i(zuz\374glic)m(h)g(der)e +(f\374r)h(das)382 1216 y(Anmelden)c(der)g(Filesysteme)f(b)s +(en\366tigten)i(Zeit.)382 1379 y(Daraus)e(lassen)f(sic)m(h)h(zw)m(ei)g +(Anforderungen)h(an)f(die)f(Soft)m(w)m(are)i(eines)f(Clusters)g(ablei-) +382 1492 y(ten:)518 1754 y Fd(\017)46 b Fp(Das)e(Filesystem)f(m)m +(u\377)i(in)f(der)g(Lage)g(sein,)k(nac)m(h)c(nic)m(h)m(t)i(ordn)m +(ungsgem\344\377er)609 1867 y(Abmeldung)40 b(binnen)f(sehr)f(kurzer)h +(Zeit)g(wieder)g(v)m(erf\374gbar)g(zu)f(sein.)65 b(Diese)609 +1980 y(Anforderung)34 b(k)-5 b(ann)33 b(v)m(on)g(herk)m(\366mmlic)m +(hen)j(Filesystemen)d(nic)m(h)m(t)h(erf\374llt)f(w)m(er-)609 +2093 y(den,)j(da)e(diese)h(in)f(solc)m(h)h(einem)g(F)-8 +b(all)35 b(die)f(K)m(onsistenz)i(der)e(Datenstrukturen)609 +2206 y(auf)c(der)h(F)-8 b(estplatte)32 b(\374b)s(erpr\374fen)f(m)m +(\374ssen.)518 2393 y Fd(\017)46 b Fp(Die)41 b(Applik)-5 +b(ationen)43 b(m)m(\374ssen)f(in)f(der)g(Lage)h(sein,)i(nac)m(h)f(nic)m +(h)m(t)g(ordn)m(ungsge-)609 2506 y(m\344\377er)j(Beendigung)g(wieder)g +(starten)f(zu)g(k)m(\366nnen.)85 b(Sie)45 b(m)m(\374ssen)g(z.B.)g(mit) +609 2619 y(Ink)m(onsistenzen)31 b(in)g(ihren)g(dynamisc)m(hen)h +(Daten\034les)f(zurec)m(h)m(tk)m(ommen.)382 2909 y Fn(2.3.3.3)103 +b(Filesystem)382 3130 y Fp(HP)37 b(setzt)g(sein)g(hauseigenes)h +(Online-Journaling-Filesystem)j(ein,)e(das)e(\304nderun-)382 +3243 y(gen)28 b(der)f(Filesystemgr\366\377e,)i(w)m(\344hrend)g(es)e(im) +h(System)f(angemeldet)i(ist,)f(un)m(terst\374tzt.)382 +3356 y(Der)33 b(Journaling-Mec)m(hanism)m(us)k(stellt)d(sic)m(her,)h +(da\377)f(die)f(Datenstrukturen)i(auf)e(der)382 3469 +y(F)-8 b(estplatte)29 b(auc)m(h)f(nac)m(h)h(einem)f(Ausfall)g(eines)f +(Knotens)i(v)m(om)f(anderen)g(Knoten)h(wie-)382 3582 +y(der)37 b(rasc)m(h)h(in)g(einen)g(k)m(onsisten)m(ten)g(Zustand)g +(gebrac)m(h)m(t)i(w)m(erden)e(k)m(\366nnen.)62 b(Es)37 +b(darf)382 3695 y(ab)s(er)30 b(immer)h(n)m(ur)g(ein)g(Knoten)g(das)f +(Filesystem)g(auf)g(der)h(Shared)g(Disk)f(angemeldet)382 +3808 y(hab)s(en.)382 3971 y(Da)41 b(b)s(ei)f(sim)m(ultanen)j(V)-8 +b(ersuc)m(hen,)45 b(das)40 b(Filesystem)h(anzumelden,)k(der)c(Inhalt)g +(der)382 4084 y(F)-8 b(estplatte)33 b(un)m(widerru\035ic)m(h)i +(zerst\366rt)d(w)m(erden)i(w\374rde,)f(v)m(erw)m(endet)h(HP)d(ein)h(sp) +s(eziel-)382 4196 y(les)38 b(SCSI-Lo)s(c)m(k-K)m(ommando,)45 +b(um)39 b(sic)m(herzustellen,)j(da\377)d(immer)h(n)m(ur)f(ein)g(Knoten) +382 4309 y(auf)34 b(die)g(Shared)h(Disk)e(zugreift.)53 +b(Stellt)34 b(der)h(HP/UX)f(Kernel)g(fest,)h(da\377)f(der)h(ande-)382 +4422 y(re)j(Knoten)g(das)g(SCSI-Lo)s(c)m(k-K)m(ommando)j(ausf\374hrt,)f +(b)s(eendet)e(er)g(sofort)f(all)h(seine)382 4535 y(Aktivit\344ten)31 +b(und)f(legt)h(das)f(System)h(mit)f(einer)h(Kernel-P)m(anik)i(still.) +382 4825 y Fn(2.3.3.4)103 b(Netzw)m(erk)382 5047 y Fp(In)30 +b(der)i(Minimalk)m(on\034guration)h(\(wie)f(in)f(Abbildung)h(2.2)f(auf) +g(Seite)g(12)g(dargestellt\))382 5159 y(gibt)i(es)f(ein)i(Netzw)m +(erksegmen)m(t,)h(das)e(so)m(w)m(ohl)h(f\374r)f(die)g(Heartb)s(eat-P)m +(ak)m(ete)i(als)d(auc)m(h)382 5272 y(den)47 b(Netzw)m(erkv)m(erk)m(ehr) +j(zwisc)m(hen)e(Clien)m(ts)g(und)f(Serv)m(er-Applik)-5 +b(ation)49 b(v)m(erw)m(endet)382 5385 y(wird.)1831 5622 +y(14)p eop +%%Page: 15 17 +15 16 bop 382 264 a Fl(KAPITEL)31 b(2.)71 b(CLUSTERING)439 +b(2.3.)71 b(HOHE)30 b(VERF\334GBARKEIT)p 382 301 2989 +4 v 382 539 a Fp(MC/ServiceGuard)25 b(un)m(terst\374tzt)g(ab)s(er)e +(auc)m(h)h(redundan)m(te)i(K)m(on\034gurationen:)40 b(Jeder)382 +652 y(Knoten)24 b(v)m(erf\374gt)g(\374b)s(er)g(zw)m(ei)g(Netzw)m(erkk) +-5 b(arten)25 b(in)f(einem)g(o)s(der)g(mehreren)g(Netzw)m(erk-)382 +764 y(segmen)m(ten,)42 b(die)d(redundan)m(t)i(durc)m(h)e(Bridges,)i +(die)e(das)g(Spanning-T)-8 b(ree)41 b(Protok)m(oll)382 +877 y(un)m(terst\374tzen,)32 b(v)m(ernetzt)g(sind.)1831 +5622 y(15)p eop +%%Page: 16 18 +16 17 bop 382 1211 a Fk(Kapitel)62 b(3)382 1676 y Fm(DRBD)71 +b(Design)382 2171 y Fp(Ein)35 b(Shared)g(SCSI-Bus)f(hat)h(eine)g(Reihe) +f(v)m(on)g(Nac)m(h)m(teilen,)k(die)c(ihn)h(als)f(Standard-)382 +2284 y(l\366sung)43 b(f\374r)g(HA-Cluster)g(auf)g(der)g(Basis)g(v)m(on) +g(Lin)m(ux)h(nic)m(h)m(t)h(geeignet)f(ersc)m(heinen)382 +2397 y(lassen:)518 2659 y Fd(\017)i Fp(Sehr)30 b(T)-8 +b(euer:)41 b(Zw)m(ei)29 b(SCSI-K)m(on)m(troller)j(pro)d(Knoten,)i(zw)m +(ei)e(SCSI-F)-8 b(estplatten.)609 2772 y(Die)30 b(b)s(ei)f(heutigen)i +(PC)g(Motherb)s(oards)f(zur)g(Standardausstattung)i(geh\366ren-)609 +2885 y(den)f(IDE-K)m(on)m(troller)i(w\374rden)f(zum)e(T)-8 +b(eil)32 b(un)m(b)s(elegt)f(bleib)s(en.)518 3072 y Fd(\017)46 +b Fp(Geringe)41 b(lok)-5 b(ale)40 b(Ausdehn)m(ung:)60 +b(Die)40 b(geringen)h(Maximall\344ngen)g(des)e(SCSI-)609 +3185 y(Busses)g(v)m(erhindern)j(die)e(Aufteilung)h(der)f(Knoten)h(auf)e +(mehrere)i(Geb\344ude;)609 3298 y(genau)31 b(das)f(w\374rde)h(jedo)s(c) +m(h)g(w)m(esen)m(tlic)m(h)i(b)s(essere)d(Chancen)h(bieten,)h(Katastro-) +609 3411 y(phen)f(wie)g(F)-8 b(euer)32 b(o)s(der)e(W)-8 +b(asserein)m(bruc)m(h)33 b(ohne)e(T)-8 b(otalausfall)32 +b(zu)f(\374b)s(erstehen.)609 3524 y(Eine)g(\334b)s(ersic)m(h)m(t)h +(\374b)s(er)e(die)h(SCSI-Standards)h(und)e(deren)h(Maximall\344ngen:)p +609 3662 2788 4 v 607 3774 4 113 v 660 3741 a(SCSI)f(Bezeic)m(hn)m(ung) +p 1428 3774 V 103 w(MB/sec)p 1835 3774 V 100 w(Datenleitungen)p +2536 3774 V 102 w(L\344nge)h([m])p 3029 3774 V 100 w(Ger\344te)p +3395 3774 V 609 3778 2788 4 v 609 3794 V 607 3907 4 113 +v 882 3873 a(SCSI)g(1)p 1428 3907 V 455 w(5)p 1835 3907 +V 509 w(8)p 2536 3907 V 552 w(6)p 3029 3907 V 384 w(7)p +3395 3907 V 609 3911 2788 4 v 607 4024 4 113 v 882 3990 +a(SCSI)g(2)p 1428 4024 V 455 w(5)p 1835 4024 V 509 w(8)p +2536 4024 V 552 w(6)p 3029 4024 V 384 w(7)p 3395 4024 +V 609 4027 2788 4 v 607 4140 4 113 v 821 4106 a(F)-8 +b(ast)31 b(SCSI)p 1428 4140 V 371 w(10)p 1835 4140 V +487 w(8)p 2536 4140 V 552 w(3)p 3029 4140 V 384 w(7)p +3395 4140 V 609 4143 2788 4 v 607 4256 4 113 v 801 4222 +a(Wide)f(SCSI)p 1428 4256 V 351 w(20)p 1835 4256 V 464 +w(16)p 2536 4256 V 530 w(6)p 3029 4256 V 362 w(15)p 3395 +4256 V 609 4259 2788 4 v 607 4372 4 113 v 801 4338 a(Ultra)g(SCSI)p +1428 4372 V 351 w(20)p 1835 4372 V 487 w(8)p 2536 4372 +V 517 w(1,5)p 3029 4372 V 349 w(7)p 3395 4372 V 609 4376 +2788 4 v 607 4488 4 113 v 682 4455 a(Ultra)g(Wide)h(SCSI)p +1428 4488 V 231 w(40)p 1835 4488 V 464 w(16)p 2536 4488 +V 495 w(1,5)p 3029 4488 V 327 w(15)p 3395 4488 V 609 +4492 2788 4 v 607 4605 4 113 v 659 4571 a(Ultra2)g(Wide)f(SCSI)p +1428 4605 V 209 w(40)p 1835 4605 V 464 w(16)p 2536 4605 +V 507 w(12)p 3029 4605 V 340 w(15)p 3395 4605 V 609 4608 +2788 4 v 607 4721 4 113 v 718 4687 a(Ultra)h(160)f(SCSI)p +1428 4721 V 245 w(160)p 1835 4721 V 442 w(16)p 2536 4721 +V 507 w(12)p 3029 4721 V 340 w(15)p 3395 4721 V 609 4724 +2788 4 v 607 4837 4 113 v 778 4803 a(Ultra3)h(SCSI)p +1428 4837 V 305 w(160)p 1835 4837 V 442 w(16)p 2536 4837 +V 507 w(12)p 3029 4837 V 340 w(15)p 3395 4837 V 609 4841 +2788 4 v 518 5057 a Fd(\017)46 b Fp(SCSI-Y-Kab)s(el)31 +b(sind)g(n)m(ur)g(sc)m(h)m(w)m(er)h(erh\344ltlic)m(h.)518 +5245 y Fd(\017)46 b Fp(Im)31 b(Gegensatz)h(zu)f(einem)h(Netzw)m(erkk)-5 +b(ab)s(el)31 b(ist)g(ein)h(SCSI-Kab)s(el)f(unhandlic)m(h)609 +5358 y(in)g(der)f(Handhabung.)1831 5622 y(16)p eop +%%Page: 17 19 +17 18 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)712 +b(3.1.)71 b(DRBD)30 b(IM)g(KERNEL)p 382 299 2989 4 v +382 539 a Fp(Die)g(Idee)g(v)m(on)h(DRBD)1179 506 y Fg(1)1248 +539 y Fp(ist)f(es,)g(die)g(Daten)h(redundan)m(t)h(in)e(jedem)h(Knoten)g +(des)f(Clu-)382 652 y(sters)41 b(abzulegen)i(und)f(alle)h(V)-8 +b(er\344nderungen)44 b(der)e(Daten)g(an)g(alle)g(Mitglieder)h(des)382 +764 y(Clusters)35 b(\374b)s(er)f(ein)h(normales)g(IP-basiertes)g(Netzw) +m(erk)g(zu)g(\374b)s(ertragen.)54 b(F)-8 b(olgende)382 +877 y(Punkte)31 b(sprec)m(hen)h(f\374r)e(den)h(Einsatz)g(v)m(on)f +(DRBD:)518 1140 y Fd(\017)46 b Fp(W)-8 b(esen)m(tlic)m(h)38 +b(k)m(osteng\374nstiger:)54 b(Da)36 b(die)g(Daten)g(v)m(on)h(DRBD)e +(redundan)m(t)j(ge-)609 1253 y(sp)s(eic)m(hert)21 b(w)m(erden,)j(sind)d +(in)f(den)h(Knoten)g(k)m(eine)g(SCSI-)g(o)s(der)f(RAID-K)m(on)m +(troller)609 1365 y(not)m(w)m(endig,)25 b(und)c(es)f(k)m(\366nnen)h(so) +m(w)m(ohl)h(die)f(ohnehin)g(v)m(orhandenen)h(IDE-K)m(on)m(troller)609 +1478 y(als)37 b(auc)m(h)h(g\374nstige)g(IDE-F)-8 b(estplatten)39 +b(zum)e(Einsatz)h(k)m(ommen.)62 b(\(Eine)38 b(IDE)609 +1591 y(F)-8 b(estplatte)32 b(k)m(ostet)f(in)f(der)h(Regel)f(n)m(ur)h +(die)g(H\344lfte)f(einer)h(SCSI-F)-8 b(estplatte.\))518 +1779 y Fd(\017)46 b Fp(Beliebige)22 b(Ausdehn)m(ung:)36 +b(IP-basierende)22 b(Netzw)m(erk)m(e)g(k)m(\366nnen)f(die)g(ganze)g(W) +-8 b(elt)609 1892 y(umspannen.)41 b(Die)28 b(Knoten)g(des)g(Clusters)g +(k)m(\366nn)m(ten)h(sogar)f(auf)f(v)m(ersc)m(hiedenen)609 +2005 y(K)m(on)m(tinen)m(ten)40 b(stehen.)58 b(\(Bei)36 +b(gro\377er)h(Ausdehn)m(ung)g(sc)m(hr\344nkt)g(allerdings)g(die)609 +2118 y(gro\377e)d(V)-8 b(erz\366gerung)35 b(des)d(Netzw)m(erk)m(es)i +(den)g(Durc)m(hsatz)g(des)f(DRBD-Ger\344tes)609 2231 +y(stark)d(ein.\))518 2418 y Fd(\017)46 b Fp(Es)30 b(sind)h(n)m(ur)g +(Standard-Netzw)m(erkk)m(omp)s(onen)m(ten)k(erforderlic)m(h.)518 +2606 y Fd(\017)46 b Fp(Netzw)m(erkk)-5 b(ab)s(el)30 b(sind)g(w)m(esen)m +(tlic)m(h)i(einfac)m(her)f(in)e(der)h(Handhabung)h(als)e(SCSI-)609 +2719 y(Kab)s(el.)382 3055 y Fj(3.1)130 b(DRBD)44 b(im)g(Kernel)382 +3308 y Fp(In)39 b(Abbildung)h(3.1)g(sind)f(die)g(K)m(omp)s(onen)m(ten)j +(des)d(Lin)m(ux-Kernels)i(so)e(dargestellt,)382 3421 +y(wie)c(man)g(sie)f(auf)h(einem)g(herk)m(\366mmlic)m(hen)i(Serv)m(er)f +(v)m(or\034ndet.)54 b(Der)35 b(graue)g(Bereic)m(h)382 +3534 y(stellt)26 b(den)g(Kernel)g(dar.)40 b(Mit)25 b(Ausnahme)h(des)g +(F)-8 b(estplatten)m(treib)s(ers)28 b(sind)e(alle)g(darge-)382 +3646 y(stellten)j(K)m(omp)s(onen)m(ten)i(\034x)d(im)g(Kernel)h(v)m +(orhanden.)42 b(Da)28 b(es)g(m\366glic)m(h)i(ist,)e(F)-8 +b(estplat-)382 3759 y(ten)m(treib)s(er)30 b(in)f(einen)h(laufenden)g +(Lin)m(ux-Kernel)h(nac)m(hzuladen,)h(meldet)e(sic)m(h)f(DRBD)382 +3872 y(als)h(F)-8 b(estplatten)m(treib)s(er)33 b(im)e(Lin)m(ux-Kernel)h +(an.)41 b(\(Siehe)31 b(Abbildung)h(3.2\))382 4035 y(DRBD)22 +b(erh\344lt)h(v)m(om)g(Bu\033er-Cac)m(he)i(Subsystem)e(des)f(Kernels)h +(Sc)m(hreib-)i(und)e(Lesean-)382 4148 y(forderungen.)41 +b(Leseanforderungen)32 b(w)m(erden)f(durc)m(h)g(eine)f(Leseanforderung) +h(an)f(den)382 4261 y(lok)-5 b(alen)43 b(F)-8 b(estplatten)m(treib)s +(er)44 b(erf\374llt,)i(w)m(\344hrend)e(die)e(Daten)m(bl\366)s(c)m(k)m +(e,)48 b(die)42 b(v)m(on)h(einer)382 4374 y(Sc)m(hreibanforderung)28 +b(stammen,)g(auc)m(h)e(an)g(das)f(zw)m(eite)i(System)e(\374b)s(er)g +(das)h(Netzw)m(erk)382 4487 y(w)m(eitergegeb)s(en)35 +b(w)m(erden.)49 b(Dadurc)m(h)34 b(wird)f(der)g(Inhalt)g(der)g +(virtuellen)h(Shared)f(Disk)382 4600 y(auf)d(b)s(eiden)h(F)-8 +b(estplatten)32 b(des)e(Clusters)g(redundan)m(t)j(abgelegt.)382 +4762 y(Grunds\344tzlic)m(h)42 b(ist)e(f\374r)h(den)f(Betrieb)i(v)m(on)e +(DRBD)g(n)m(ur)i(eine)e(Netzw)m(erkk)-5 b(arte)42 b(pro)382 +4875 y(System)33 b(erforderlic)m(h.)49 b(Es)33 b(k)m(omm)m(t)h(ab)s(er) +f(nic)m(h)m(t)h(n)m(ur)f(DRBD)f(zugute,)j(w)m(enn)f(f\374r)e(die)382 +4988 y(V)-8 b(erbindung)41 b(zwisc)m(hen)f(den)f(Systemen)g(ein)g +(eigenes)h(Netz)f(zur)g(V)-8 b(erf\374gung)40 b(steh)m(t.)382 +5101 y(Dies)26 b(hilft)h(v)m(or)f(allem)i(der)e(Cluster-Soft)m(w)m +(are,)k(zwisc)m(hen)e(dem)f(Ausfall)f(eines)h(ganzen)382 +5214 y(Knotens)k(und)g(dem)g(Ausfall)e(einer)i(Netzw)m(erkk)-5 +b(arte)32 b(zu)f(un)m(tersc)m(heiden.)p 382 5275 1196 +4 v 486 5329 a Ff(1)520 5361 y Fe(Distributed)25 b(replicated)h(blo)r +(c)n(k)g(device)1831 5622 y Fp(17)p eop +%%Page: 18 20 +18 19 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)712 +b(3.1.)71 b(DRBD)30 b(IM)g(KERNEL)p 382 299 2989 4 v +1156 2585 a + currentpoint currentpoint translate 0.79683 0.79683 scale neg exch +neg exch translate + 1156 2585 a @beginspecial 61 @llx 449 @lly +278 @urx 771 @ury 2170 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//scheme1.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Wed Mar 15 09:13:19 2000 +%%Title: scheme1.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 61 449 278 771 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +[215.433 0 0 -130.394 62.3622 702.992] rect +0.848 0.835 0.949 rgb +F +newpath +127.284 473.387 m +130.118 470.552 l +152.796 470.552 l +155.63 473.387 l +closepath +0.8 0.8 0.8 rgb +F +127.284 473.387 m +130.118 470.552 l +152.796 470.552 l +155.63 473.387 l +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[34.0158 0 0 -28.3465 124.449 501.733] rect +gsave +0.8 0.8 0.8 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[28.3465 0 0 -22.6772 127.284 498.899] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[39.6282 -2.12668 -3.43822 -11.171 121.947 468.773] rect +S +newpath +122.957 466.447 m +124.089 466.386 l +S +newpath +120.894 459.744 m +122.026 459.684 l +S +newpath +121.41 461.42 m +122.542 461.359 l +S +newpath +121.926 463.096 m +123.058 463.035 l +S +newpath +122.441 464.771 m +123.574 464.71 l +S +newpath +124.655 466.356 m +125.788 466.295 l +S +newpath +122.593 459.653 m +123.725 459.592 l +S +newpath +123.108 461.329 m +124.24 461.268 l +S +newpath +123.624 463.004 m +124.756 462.944 l +S +newpath +124.14 464.68 m +125.272 464.619 l +S +newpath +126.354 466.265 m +127.486 466.204 l +S +newpath +124.291 459.562 m +125.423 459.501 l +S +newpath +124.807 461.238 m +125.939 461.177 l +S +newpath +125.322 462.913 m +126.455 462.852 l +S +newpath +125.838 464.589 m +126.97 464.528 l +S +newpath +128.052 466.173 m +129.184 466.113 l +S +newpath +125.989 459.471 m +127.121 459.41 l +S +newpath +126.505 461.146 m +127.637 461.086 l +S +newpath +127.021 462.822 m +128.153 462.761 l +S +newpath +127.536 464.498 m +128.669 464.437 l +S +newpath +129.751 466.082 m +130.883 466.021 l +S +newpath +127.688 459.38 m +128.82 459.319 l +S +newpath +128.203 461.055 m +129.336 460.995 l +S +newpath +128.719 462.731 m +129.851 462.67 l +S +newpath +129.235 464.407 m +130.367 464.346 l +S +newpath +131.449 465.991 m +132.581 465.93 l +S +newpath +129.386 459.289 m +130.518 459.228 l +S +newpath +129.902 460.964 m +131.034 460.903 l +S +newpath +130.417 462.64 m +131.55 462.579 l +S +newpath +130.933 464.315 m +132.065 464.255 l +S +newpath +133.147 465.9 m +134.279 465.839 l +S +newpath +131.084 459.197 m +132.217 459.137 l +S +newpath +131.6 460.873 m +132.732 460.812 l +S +newpath +132.116 462.549 m +133.248 462.488 l +S +newpath +132.631 464.224 m +133.764 464.164 l +S +newpath +134.846 465.809 m +135.978 465.748 l +S +newpath +132.783 459.106 m +133.915 459.046 l +S +newpath +133.298 460.782 m +134.431 460.721 l +S +newpath +133.814 462.458 m +134.946 462.397 l +S +newpath +134.33 464.133 m +135.462 464.072 l +S +newpath +136.544 465.718 m +137.676 465.657 l +S +newpath +134.481 459.015 m +135.613 458.954 l +S +newpath +134.997 460.691 m +136.129 460.63 l +S +newpath +135.512 462.366 m +136.645 462.306 l +S +newpath +136.028 464.042 m +137.16 463.981 l +S +newpath +138.242 465.627 m +139.375 465.566 l +S +newpath +136.179 458.924 m +137.312 458.863 l +S +newpath +136.695 460.6 m +137.827 460.539 l +S +newpath +137.211 462.275 m +138.343 462.214 l +S +newpath +137.727 463.951 m +138.859 463.89 l +S +newpath +139.941 465.535 m +141.073 465.475 l +S +newpath +137.878 458.833 m +139.01 458.772 l +S +newpath +138.393 460.508 m +139.526 460.448 l +S +newpath +138.909 462.184 m +140.041 462.123 l +S +newpath +139.425 463.86 m +140.557 463.799 l +S +newpath +141.639 465.444 m +142.771 465.383 l +S +newpath +139.576 458.742 m +140.708 458.681 l +S +newpath +140.092 460.417 m +141.224 460.357 l +S +newpath +140.608 462.093 m +141.74 462.032 l +S +newpath +141.123 463.769 m +142.255 463.708 l +S +newpath +143.337 465.353 m +144.47 465.292 l +S +newpath +152.395 464.867 m +153.527 464.806 l +S +newpath +141.274 458.651 m +142.407 458.59 l +S +newpath +150.332 458.164 m +151.464 458.104 l +S +newpath +141.79 460.326 m +142.922 460.265 l +S +newpath +150.848 459.84 m +151.98 459.779 l +S +newpath +142.306 462.002 m +143.438 461.941 l +S +newpath +151.364 461.516 m +152.496 461.455 l +S +newpath +142.822 463.677 m +143.954 463.617 l +S +newpath +151.879 463.191 m +153.012 463.131 l +S +newpath +145.036 465.262 m +146.168 465.201 l +S +newpath +154.094 464.776 m +155.226 464.715 l +S +newpath +142.973 458.559 m +144.105 458.499 l +S +newpath +152.031 458.073 m +153.163 458.013 l +S +newpath +143.488 460.235 m +144.621 460.174 l +S +newpath +152.546 459.749 m +153.679 459.688 l +S +newpath +144.004 461.911 m +145.136 461.85 l +S +newpath +153.062 461.425 m +154.194 461.364 l +S +newpath +144.52 463.586 m +145.652 463.526 l +S +newpath +153.578 463.1 m +154.71 463.039 l +S +newpath +146.734 465.171 m +147.866 465.11 l +S +newpath +155.792 464.685 m +156.924 464.624 l +S +newpath +144.671 458.468 m +145.803 458.408 l +S +newpath +153.729 457.982 m +154.861 457.921 l +S +newpath +145.187 460.144 m +146.319 460.083 l +S +newpath +154.245 459.658 m +155.377 459.597 l +S +newpath +145.703 461.82 m +146.835 461.759 l +S +newpath +154.76 461.333 m +155.893 461.273 l +S +newpath +146.218 463.495 m +147.351 463.434 l +S +newpath +155.276 463.009 m +156.408 462.948 l +S +newpath +148.432 465.08 m +149.565 465.019 l +S +newpath +157.49 464.594 m +158.622 464.533 l +S +newpath +146.369 458.377 m +147.502 458.316 l +S +newpath +155.427 457.891 m +156.56 457.83 l +S +newpath +146.885 460.053 m +148.017 459.992 l +S +newpath +155.943 459.567 m +157.075 459.506 l +S +newpath +147.401 461.728 m +148.533 461.668 l +S +newpath +156.459 461.242 m +157.591 461.182 l +S +newpath +147.917 463.404 m +149.049 463.343 l +S +newpath +156.975 462.918 m +158.107 462.857 l +S +newpath +210.035 473.387 m +212.869 470.552 l +235.547 470.552 l +238.381 473.387 l +closepath +0.8 0.8 0.8 rgb +F +210.035 473.387 m +212.869 470.552 l +235.547 470.552 l +238.381 473.387 l +0 0 0 rgb +S +[34.0158 0 0 -28.3465 207.2 501.733] rect +gsave +0.8 0.8 0.8 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[28.3465 0 0 -22.6772 210.035 498.899] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[39.6282 -2.12668 -3.43822 -11.171 204.698 468.773] rect +S +newpath +205.708 466.447 m +206.84 466.386 l +S +newpath +203.645 459.744 m +204.777 459.684 l +S +newpath +204.161 461.42 m +205.293 461.359 l +S +newpath +204.677 463.096 m +205.809 463.035 l +S +newpath +205.192 464.771 m +206.325 464.71 l +S +newpath +207.406 466.356 m +208.539 466.295 l +S +newpath +205.344 459.653 m +206.476 459.592 l +S +newpath +205.859 461.329 m +206.991 461.268 l +S +newpath +206.375 463.004 m +207.507 462.944 l +S +newpath +206.891 464.68 m +208.023 464.619 l +S +newpath +209.105 466.265 m +210.237 466.204 l +S +newpath +207.042 459.562 m +208.174 459.501 l +S +newpath +207.558 461.238 m +208.69 461.177 l +S +newpath +208.073 462.913 m +209.206 462.852 l +S +newpath +208.589 464.589 m +209.721 464.528 l +S +newpath +210.803 466.173 m +211.935 466.113 l +S +newpath +208.74 459.471 m +209.872 459.41 l +S +newpath +209.256 461.146 m +210.388 461.086 l +S +newpath +209.772 462.822 m +210.904 462.761 l +S +newpath +210.287 464.498 m +211.42 464.437 l +S +newpath +212.502 466.082 m +213.634 466.021 l +S +newpath +210.439 459.38 m +211.571 459.319 l +S +newpath +210.954 461.055 m +212.087 460.995 l +S +newpath +211.47 462.731 m +212.602 462.67 l +S +newpath +211.986 464.407 m +213.118 464.346 l +S +newpath +214.2 465.991 m +215.332 465.93 l +S +newpath +212.137 459.289 m +213.269 459.228 l +S +newpath +212.653 460.964 m +213.785 460.903 l +S +newpath +213.168 462.64 m +214.301 462.579 l +S +newpath +213.684 464.315 m +214.816 464.255 l +S +newpath +215.898 465.9 m +217.03 465.839 l +S +newpath +213.835 459.197 m +214.968 459.137 l +S +newpath +214.351 460.873 m +215.483 460.812 l +S +newpath +214.867 462.549 m +215.999 462.488 l +S +newpath +215.382 464.224 m +216.515 464.164 l +S +newpath +217.597 465.809 m +218.729 465.748 l +S +newpath +215.534 459.106 m +216.666 459.046 l +S +newpath +216.049 460.782 m +217.182 460.721 l +S +newpath +216.565 462.458 m +217.697 462.397 l +S +newpath +217.081 464.133 m +218.213 464.072 l +S +newpath +219.295 465.718 m +220.427 465.657 l +S +newpath +217.232 459.015 m +218.364 458.954 l +S +newpath +217.748 460.691 m +218.88 460.63 l +S +newpath +218.263 462.366 m +219.396 462.306 l +S +newpath +218.779 464.042 m +219.911 463.981 l +S +newpath +220.993 465.627 m +222.126 465.566 l +S +newpath +218.93 458.924 m +220.063 458.863 l +S +newpath +219.446 460.6 m +220.578 460.539 l +S +newpath +219.962 462.275 m +221.094 462.214 l +S +newpath +220.478 463.951 m +221.61 463.89 l +S +newpath +222.692 465.535 m +223.824 465.475 l +S +newpath +220.629 458.833 m +221.761 458.772 l +S +newpath +221.144 460.508 m +222.277 460.448 l +S +newpath +221.66 462.184 m +222.792 462.123 l +S +newpath +222.176 463.86 m +223.308 463.799 l +S +newpath +224.39 465.444 m +225.522 465.383 l +S +newpath +222.327 458.742 m +223.459 458.681 l +S +newpath +222.843 460.417 m +223.975 460.357 l +S +newpath +223.359 462.093 m +224.491 462.032 l +S +newpath +223.874 463.769 m +225.006 463.708 l +S +newpath +226.088 465.353 m +227.221 465.292 l +S +newpath +235.146 464.867 m +236.278 464.806 l +S +newpath +224.025 458.651 m +225.158 458.59 l +S +newpath +233.083 458.164 m +234.215 458.104 l +S +newpath +224.541 460.326 m +225.673 460.265 l +S +newpath +233.599 459.84 m +234.731 459.779 l +S +newpath +225.057 462.002 m +226.189 461.941 l +S +newpath +234.115 461.516 m +235.247 461.455 l +S +newpath +225.573 463.677 m +226.705 463.617 l +S +newpath +234.63 463.191 m +235.763 463.131 l +S +newpath +227.787 465.262 m +228.919 465.201 l +S +newpath +236.845 464.776 m +237.977 464.715 l +S +newpath +225.724 458.559 m +226.856 458.499 l +S +newpath +234.782 458.073 m +235.914 458.013 l +S +newpath +226.239 460.235 m +227.372 460.174 l +S +newpath +235.297 459.749 m +236.43 459.688 l +S +newpath +226.755 461.911 m +227.887 461.85 l +S +newpath +235.813 461.425 m +236.945 461.364 l +S +newpath +227.271 463.586 m +228.403 463.526 l +S +newpath +236.329 463.1 m +237.461 463.039 l +S +newpath +229.485 465.171 m +230.617 465.11 l +S +newpath +238.543 464.685 m +239.675 464.624 l +S +newpath +227.422 458.468 m +228.554 458.408 l +S +newpath +236.48 457.982 m +237.612 457.921 l +S +newpath +227.938 460.144 m +229.07 460.083 l +S +newpath +236.996 459.658 m +238.128 459.597 l +S +newpath +228.454 461.82 m +229.586 461.759 l +S +newpath +237.511 461.333 m +238.644 461.273 l +S +newpath +228.969 463.495 m +230.102 463.434 l +S +newpath +238.027 463.009 m +239.159 462.948 l +S +newpath +231.183 465.08 m +232.316 465.019 l +S +newpath +240.241 464.594 m +241.373 464.533 l +S +newpath +229.12 458.377 m +230.253 458.316 l +S +newpath +238.178 457.891 m +239.311 457.83 l +S +newpath +229.636 460.053 m +230.768 459.992 l +S +newpath +238.694 459.567 m +239.826 459.506 l +S +newpath +230.152 461.728 m +231.284 461.668 l +S +newpath +239.21 461.242 m +240.342 461.182 l +S +newpath +230.668 463.404 m +231.8 463.343 l +S +newpath +239.726 462.918 m +240.858 462.857 l +S +newpath +221.103 532.914 m +221.103 507.402 l +S +newpath +221.103 518.741 m +138.898 518.741 l +138.898 507.402 l +S +/Times-Roman 12 sf +(...) +175 496 T +newpath +201.26 558.425 m +198.425 558.425 l +198.425 555.591 l +201.26 555.591 l +S +newpath +201.26 544.252 m +209.764 544.252 l +209.764 538.583 l +235.276 538.583 l +235.276 544.252 l +255.118 544.252 l +255.118 561.26 l +201.26 561.26 l +201.26 566.929 l +201.26 538.583 l +S +newpath +212.598 544.252 m +212.598 538.583 l +S +newpath +218.268 544.252 m +218.268 538.583 l +S +newpath +215.433 544.252 m +215.433 538.583 l +S +newpath +221.102 544.252 m +221.102 538.583 l +S +newpath +223.937 544.252 m +223.937 538.583 l +S +newpath +226.772 544.252 m +226.772 538.583 l +S +newpath +229.606 544.252 m +229.606 538.583 l +S +newpath +232.441 544.252 m +232.441 538.583 l +S +(NIC) +217 549 T +[-85.0394 0 0 28.3464 155.906 581.102] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 269.291 581.102] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 155.906 623.622] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +221.102 581.102 m +221.102 569.197 l +0.992126 w +S +pusht +221.102 569.197 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +232.441 566.929 m +232.441 578.835 l +1 w +S +pusht +232.441 578.835 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 623.622 m +107.717 611.717 l +0.992126 w +S +pusht +107.717 611.717 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 609.449 m +119.055 621.354 l +1 w +S +pusht +119.055 621.354 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 666.142 m +107.717 654.236 l +0.992126 w +S +pusht +107.717 654.236 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 651.968 m +119.055 663.874 l +1 w +S +pusht +119.055 663.874 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 708.661 m +107.717 696.756 l +0.992126 w +S +pusht +107.717 696.756 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 694.488 m +119.055 706.394 l +1 w +S +pusht +119.055 706.394 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +221.102 694.488 m +221.102 682.583 l +0.992126 w +S +pusht +221.102 682.583 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +232.441 680.315 m +232.441 692.22 l +1 w +S +pusht +232.441 692.22 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +221.102 632.126 m +221.102 620.221 l +0.992126 w +S +pusht +221.102 620.221 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +232.441 617.953 m +232.441 629.858 l +1 w +S +pusht +232.441 629.858 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 581.102 m +107.717 569.197 l +0.992126 w +S +pusht +107.717 569.197 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 566.929 m +119.055 578.835 l +1 w +S +pusht +119.055 578.835 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +[-28.3465 0 0 7.08663 113.386 545.669] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 113.386 552.756] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 113.386 559.842] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +/Times-Roman 12 sf +(Disk) +102 555 T +(Disk driver) +86 592 T +(Disk scheduler) +81 626 T +(Buffer cache) +73 640 T +[85.0394 0 0 -28.3464 70.8661 694.488] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[85.0394 0 0 -28.3464 184.252 668.976] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +/Times-Roman 12 sf +(File system) +85 677 T +(NIC driver) +201 592 T +(TCP/IP) +209 649 T +[198.425 0 0 56.6929 70.8661 708.661] rect +S +(Service) +152 734 T +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 1156 2585 a + currentpoint currentpoint translate 1 0.79683 div 1 0.79683 div scale +neg exch neg exch translate + 1156 2585 a 716 2781 a Fp(Abbildung)i(3.1:)41 +b(Daten\035u\377)31 b(in)g(einem)g(einfac)m(hen)h(Serv)m(ersystem)382 +3056 y Fo(3.1.1)112 b(Seman)m(tik)m(en)382 3278 y Fp(DRBD)41 +b(wurde)i(v)m(or)f(allem)h(f\374r)f(den)g(Einsatz)h(in)f(einem)h +(HA-Cluster)f(en)m(t)m(wic)m(k)m(elt,)382 3391 y(Lastv)m(erteilung)28 +b(wurde)e(dab)s(ei)g(nic)m(h)m(t)i(b)s(er\374c)m(ksic)m(h)m(tigt.)41 +b(Daher)26 b(wurde)h(bisher)f(auf)f(die)382 3504 y(exakte)i(Nac)m(h)m +(bildung)j(der)d(Seman)m(tik)i(einer)e(Shared)h(Disk)f(v)m(erzic)m(h)m +(tet.)42 b(F\374r)27 b(eine)h(ex-)382 3617 y(akte)c(Nac)m(h)m(bildung)j +(der)e(Seman)m(tik)h(m)m(\374\377ten)g(die)f(Daten,)h(w)m(enn)g(sie)e +(v)m(on)h(DRBD)e(\374b)s(er)382 3729 y(das)34 b(Netzw)m(erk)h +(empfangen)g(w)m(erden,)h(ohne)f(da\377)f(diese)g(im)g(Bu\033er-Cac)m +(he)i(abgelegt)382 3842 y(w)m(erden,)46 b(direkt)c(an)g(den)h(darun)m +(terliegenden)i(F)-8 b(estplatten)m(treib)s(er)44 b(w)m(eitergegeb)s +(en)382 3955 y(w)m(erden.)d(Diese)27 b(Seman)m(tik)h(w)m(\344re)g +(f\374r)f(den)g(Einsatz)h(eines)f(Shared-Disk)h(Filesystems)382 +4068 y(wie)j(z.B.)f(GFS)907 4035 y Fg(2)977 4068 y Fp([PBB+99)q(])g +(erforderlic)m(h.)382 4358 y Fn(3.1.1.1)103 b(GFS)382 +4580 y Fp(Im)42 b(Un)m(tersc)m(hied)i(zu)e(anderen)h(Filesystemen)g(k) +-5 b(ann)42 b(GFS)g(ein)g(Dateisystem,)k(das)382 4692 +y(auf)26 b(einer)i(Shared)f(Disk)f(liegt,)i(v)m(on)f(mehreren)h(Knoten) +g(aus)e(gleic)m(hzeitig)j(anmelden.)382 4805 y(Um)35 +b(die)g(Zugri\033e)h(der)g(Knoten)g(auf)f(die)g(Datenstrukturen)i(auf)d +(der)i(F)-8 b(estplatte)36 b(zu)382 4918 y(k)m(o)s(ordinieren,)h(ist)d +(ein)g(v)m(erteilter)i(K)m(o)s(ordinationsmec)m(hanism)m(us)i +(erforderlic)m(h.)54 b(Die)382 5031 y(GFS)29 b(En)m(t)m(wic)m(kler)k +(hab)s(en)d(dies)f(mit)h(Hilfe)f(eines)h(sp)s(eziellen)g(SCSI-K)m +(ommandos)i(im-)382 5144 y(plemen)m(tiert,)h(das)d(auc)m(h)h(im)g +(SCSI-Ger\344t)g(implemen)m(tiert)i(sein)d(m)m(u\377.)p +382 5206 1196 4 v 486 5259 a Ff(2)520 5291 y Fe(Global)d(Filesystem) +1831 5622 y Fp(18)p eop +%%Page: 19 21 +19 20 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)712 +b(3.1.)71 b(DRBD)30 b(IM)g(KERNEL)p 382 299 2989 4 v +382 4014 a + currentpoint currentpoint translate 0.75989 0.75989 scale neg exch +neg exch translate + 382 4014 a @beginspecial 61 @llx 392 @lly +533 @urx 771 @ury 4720 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//scheme2.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Wed Mar 15 09:15:38 2000 +%%Title: scheme2.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 61 392 533 771 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +[215.433 0 0 -172.913 62.3622 702.992] rect +0.848 0.835 0.949 rgb +F +[215.433 0 0 -172.915 317.481 702.994] rect +F +newpath +155.906 595.276 m +184.252 595.276 l +0.509 0.376 0.687 rgb +2.83465 w +0 j +0 J +[] 0 d +S +pusht +184.252 595.276 translate +0 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +411.025 595.278 m +439.371 595.278 l +S +pusht +439.371 595.278 translate +0 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +263.622 513.072 m +342.993 513.072 l +S +pusht +342.993 513.072 translate +0 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +252.284 581.103 m +252.284 566.93 l +S +pusht +252.284 566.93 translate +-90 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +394.017 566.931 m +394.017 581.104 l +S +pusht +394.017 581.104 translate +90 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +507.402 609.45 m +507.402 623.623 l +S +pusht +507.402 623.623 translate +90 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +507.402 581.103 m +507.402 566.93 l +S +pusht +507.402 566.93 translate +-90 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +507.402 538.584 m +507.402 524.41 l +S +pusht +507.402 524.41 translate +-90 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +252.284 538.583 m +252.284 524.41 l +S +pusht +252.284 524.41 translate +-90 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +394.016 518.741 m +394.017 538.584 l +S +pusht +394.017 538.584 translate +89.9971 rotate +2.83465 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +[-85.0394 0 0 28.3464 155.906 538.583] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 524.41 538.583] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 155.906 581.103] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 524.41 581.103] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 269.291 538.583] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 411.024 538.584] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 155.906 623.622] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[-85.0394 0 0 28.3464 524.41 623.622] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +newpath +221.102 538.583 m +221.102 526.678 l +0.992126 w +S +pusht +221.102 526.678 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +232.441 524.41 m +232.441 536.316 l +1 w +S +pusht +232.441 536.316 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 623.622 m +107.717 611.717 l +0.992126 w +S +pusht +107.717 611.717 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 609.449 m +119.055 621.354 l +1 w +S +pusht +119.055 621.354 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 581.103 m +107.717 569.198 l +0.992126 w +S +pusht +107.717 569.198 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 566.93 m +119.055 578.835 l +1 w +S +pusht +119.055 578.835 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 666.142 m +107.717 654.236 l +0.992126 w +S +pusht +107.717 654.236 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 651.968 m +119.055 663.874 l +1 w +S +pusht +119.055 663.874 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 708.661 m +107.717 696.756 l +0.992126 w +S +pusht +107.717 696.756 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 694.488 m +119.055 706.394 l +1 w +S +pusht +119.055 706.394 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +221.102 643.465 m +221.102 631.56 l +0.992126 w +S +pusht +221.102 631.56 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +232.441 629.292 m +232.441 641.197 l +1 w +S +pusht +232.441 641.197 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +221.102 581.103 m +221.102 569.198 l +0.992126 w +S +pusht +221.102 569.198 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +232.441 566.93 m +232.441 578.835 l +1 w +S +pusht +232.441 578.835 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +107.717 538.583 m +107.717 526.678 l +0.992126 w +S +pusht +107.717 526.678 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +119.055 524.41 m +119.055 536.316 l +1 w +S +pusht +119.055 536.316 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +[-28.3465 0 0 7.08663 113.386 503.15] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 113.386 510.237] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 113.386 517.323] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +/Times-Roman 12 sf +(Disk) +102 513 T +[-28.3465 0 0 7.08663 481.89 503.15] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 481.89 510.237] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +[-28.3465 0 0 7.08663 481.89 517.323] ellipse +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.992126 w +0 j +0 J +[] 0 d +S +/Times-Roman 12 sf +(Disk) +470 513 T +(Disk driver) +86 549 T +(Disk driver) +454 549 T +(DRBD) +96 592 T +(DRBD) +464 592 T +(Disk scheduler) +81 626 T +(Disk scheduler) +449 626 T +(Buffer cache) +73 640 T +(Buffer cache) +442 640 T +[85.0394 0 0 -28.3464 70.8661 694.488] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[85.0394 0 0 -28.3464 439.37 694.488] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[85.0394 0 0 -28.3464 184.252 609.45] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[85.0394 0 0 -28.3464 325.985 609.451] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +/Times-Roman 12 sf +(File system) +85 677 T +(File system) +454 677 T +(NIC driver) +201 549 T +(NIC driver) +342 549 T +(TCP/IP) +209 592 T +(TCP/IP) +351 592 T +[198.425 0 0 56.6929 70.8661 708.661] rect +S +[198.425 0 0 56.6929 325.985 708.663] rect +0.992126 w +[0.992126 0.992126 ] 0 d +S +(Service) +152 734 T +(Service) +407 734 T +newpath +210.898 513.071 m +208.064 513.071 l +208.064 510.237 l +210.898 510.237 l +1 w +[] 0 d +S +newpath +201.26 518.74 m +198.426 518.74 l +198.426 515.906 l +201.26 515.906 l +S +newpath +210.898 498.898 m +219.402 498.898 l +219.402 493.229 l +244.915 493.229 l +244.915 498.898 l +264.757 498.898 l +264.757 515.906 l +210.898 515.906 l +210.898 521.575 l +210.898 493.229 l +closepath +1 1 1 rgb +F +210.898 498.898 m +219.402 498.898 l +219.402 493.229 l +244.915 493.229 l +244.915 498.898 l +264.757 498.898 l +264.757 515.906 l +210.898 515.906 l +210.898 521.575 l +210.898 493.229 l +0 0 0 rgb +S +newpath +201.26 504.567 m +209.764 504.567 l +209.764 498.898 l +235.277 498.898 l +235.277 504.567 l +255.118 504.567 l +255.118 521.575 l +201.26 521.575 l +201.26 527.244 l +201.26 498.898 l +closepath +1 1 1 rgb +F +201.26 504.567 m +209.764 504.567 l +209.764 498.898 l +235.277 498.898 l +235.277 504.567 l +255.118 504.567 l +255.118 521.575 l +201.26 521.575 l +201.26 527.244 l +201.26 498.898 l +0 0 0 rgb +S +newpath +222.236 498.898 m +222.236 493.229 l +S +newpath +212.598 504.567 m +212.598 498.898 l +S +newpath +227.906 498.898 m +227.906 493.229 l +S +newpath +218.268 504.567 m +218.268 498.898 l +S +newpath +225.072 498.898 m +225.072 493.229 l +S +newpath +215.434 504.567 m +215.434 498.898 l +S +newpath +230.74 498.898 m +230.74 493.229 l +S +newpath +221.103 504.567 m +221.103 498.898 l +S +newpath +233.576 498.898 m +233.576 493.229 l +S +newpath +223.938 504.567 m +223.938 498.898 l +S +newpath +236.411 498.898 m +236.411 493.229 l +S +newpath +226.773 504.567 m +226.773 498.898 l +S +newpath +239.245 498.898 m +239.245 493.229 l +S +newpath +229.607 504.567 m +229.607 498.898 l +S +newpath +242.079 498.898 m +242.079 493.229 l +S +newpath +232.441 504.567 m +232.441 498.898 l +S +(NIC) +215 510 T +newpath +352.632 513.072 m +349.797 513.072 l +349.797 510.238 l +352.632 510.238 l +S +newpath +342.994 518.741 m +340.159 518.741 l +340.159 515.907 l +342.994 515.907 l +S +newpath +352.632 498.899 m +361.136 498.899 l +361.136 493.23 l +386.648 493.23 l +386.648 498.899 l +406.49 498.899 l +406.49 515.907 l +352.632 515.907 l +352.632 521.576 l +352.632 493.23 l +closepath +1 1 1 rgb +F +352.632 498.899 m +361.136 498.899 l +361.136 493.23 l +386.648 493.23 l +386.648 498.899 l +406.49 498.899 l +406.49 515.907 l +352.632 515.907 l +352.632 521.576 l +352.632 493.23 l +0 0 0 rgb +S +newpath +342.994 504.568 m +351.498 504.568 l +351.498 498.899 l +377.01 498.899 l +377.01 504.568 l +396.852 504.568 l +396.852 521.576 l +342.994 521.576 l +342.994 527.245 l +342.994 498.899 l +closepath +1 1 1 rgb +F +342.994 504.568 m +351.498 504.568 l +351.498 498.899 l +377.01 498.899 l +377.01 504.568 l +396.852 504.568 l +396.852 521.576 l +342.994 521.576 l +342.994 527.245 l +342.994 498.899 l +0 0 0 rgb +S +newpath +363.97 498.899 m +363.97 493.23 l +S +newpath +354.332 504.568 m +354.332 498.899 l +S +newpath +369.64 498.899 m +369.64 493.23 l +S +newpath +360.002 504.568 m +360.002 498.899 l +S +newpath +366.805 498.899 m +366.805 493.23 l +S +newpath +357.167 504.568 m +357.167 498.899 l +S +newpath +372.474 498.899 m +372.474 493.23 l +S +newpath +362.836 504.568 m +362.836 498.899 l +S +newpath +375.309 498.899 m +375.309 493.23 l +S +newpath +365.671 504.568 m +365.671 498.899 l +S +newpath +378.144 498.899 m +378.144 493.23 l +S +newpath +368.506 504.568 m +368.506 498.899 l +S +newpath +380.978 498.899 m +380.978 493.23 l +S +newpath +371.34 504.568 m +371.34 498.899 l +S +newpath +383.813 498.899 m +383.813 493.23 l +S +newpath +374.175 504.568 m +374.175 498.899 l +S +(NIC) +357 510 T +newpath +235.547 416.693 m +238.382 413.858 l +261.059 413.858 l +263.893 416.693 l +closepath +0.8 0.8 0.8 rgb +F +235.547 416.693 m +238.382 413.858 l +261.059 413.858 l +263.893 416.693 l +0 0 0 rgb +S +[34.0158 0 0 -28.3465 232.712 445.039] rect +gsave +0.8 0.8 0.8 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[28.3465 0 0 -22.6772 235.547 442.205] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[39.6282 -2.12668 -3.43822 -11.171 230.21 412.079] rect +S +newpath +231.22 409.753 m +232.352 409.692 l +S +newpath +229.157 403.05 m +230.29 402.99 l +S +newpath +229.673 404.726 m +230.805 404.665 l +S +newpath +230.189 406.402 m +231.321 406.341 l +S +newpath +230.705 408.077 m +231.837 408.016 l +S +newpath +232.919 409.662 m +234.051 409.601 l +S +newpath +230.856 402.959 m +231.988 402.898 l +S +newpath +231.371 404.635 m +232.504 404.574 l +S +newpath +231.887 406.31 m +233.019 406.25 l +S +newpath +232.403 407.986 m +233.535 407.925 l +S +newpath +234.617 409.571 m +235.749 409.51 l +S +newpath +232.554 402.868 m +233.686 402.807 l +S +newpath +233.07 404.544 m +234.202 404.483 l +S +newpath +233.585 406.219 m +234.718 406.158 l +S +newpath +234.101 407.895 m +235.233 407.834 l +S +newpath +236.315 409.479 m +237.448 409.419 l +S +newpath +234.252 402.777 m +235.385 402.716 l +S +newpath +234.768 404.452 m +235.9 404.392 l +S +newpath +235.284 406.128 m +236.416 406.067 l +S +newpath +235.8 407.804 m +236.932 407.743 l +S +newpath +238.014 409.388 m +239.146 409.327 l +S +newpath +235.951 402.686 m +237.083 402.625 l +S +newpath +236.466 404.361 m +237.599 404.301 l +S +newpath +236.982 406.037 m +238.114 405.976 l +S +newpath +237.498 407.713 m +238.63 407.652 l +S +newpath +239.712 409.297 m +240.844 409.236 l +S +newpath +237.649 402.595 m +238.781 402.534 l +S +newpath +238.165 404.27 m +239.297 404.209 l +S +newpath +238.681 405.946 m +239.813 405.885 l +S +newpath +239.196 407.621 m +240.329 407.561 l +S +newpath +241.41 409.206 m +242.543 409.145 l +S +newpath +239.347 402.503 m +240.48 402.443 l +S +newpath +239.863 404.179 m +240.995 404.118 l +S +newpath +240.379 405.855 m +241.511 405.794 l +S +newpath +240.895 407.53 m +242.027 407.47 l +S +newpath +243.109 409.115 m +244.241 409.054 l +S +newpath +241.046 402.412 m +242.178 402.352 l +S +newpath +241.562 404.088 m +242.694 404.027 l +S +newpath +242.077 405.764 m +243.21 405.703 l +S +newpath +242.593 407.439 m +243.725 407.378 l +S +newpath +244.807 409.024 m +245.939 408.963 l +S +newpath +242.744 402.321 m +243.876 402.26 l +S +newpath +243.26 403.997 m +244.392 403.936 l +S +newpath +243.776 405.672 m +244.908 405.612 l +S +newpath +244.291 407.348 m +245.424 407.287 l +S +newpath +246.505 408.933 m +247.638 408.872 l +S +newpath +244.442 402.23 m +245.575 402.169 l +S +newpath +244.958 403.906 m +246.09 403.845 l +S +newpath +245.474 405.581 m +246.606 405.52 l +S +newpath +245.99 407.257 m +247.122 407.196 l +S +newpath +248.204 408.841 m +249.336 408.781 l +S +newpath +246.141 402.139 m +247.273 402.078 l +S +newpath +246.657 403.814 m +247.789 403.754 l +S +newpath +247.172 405.49 m +248.305 405.429 l +S +newpath +247.688 407.166 m +248.82 407.105 l +S +newpath +249.902 408.75 m +251.034 408.689 l +S +newpath +247.839 402.048 m +248.971 401.987 l +S +newpath +248.355 403.723 m +249.487 403.663 l +S +newpath +248.871 405.399 m +250.003 405.338 l +S +newpath +249.386 407.075 m +250.519 407.014 l +S +newpath +251.6 408.659 m +252.733 408.598 l +S +newpath +260.658 408.173 m +261.791 408.112 l +S +newpath +249.538 401.957 m +250.67 401.896 l +S +newpath +258.595 401.47 m +259.728 401.41 l +S +newpath +250.053 403.632 m +251.186 403.571 l +S +newpath +259.111 403.146 m +260.243 403.085 l +S +newpath +250.569 405.308 m +251.701 405.247 l +S +newpath +259.627 404.822 m +260.759 404.761 l +S +newpath +251.085 406.983 m +252.217 406.923 l +S +newpath +260.143 406.497 m +261.275 406.437 l +S +newpath +253.299 408.568 m +254.431 408.507 l +S +newpath +262.357 408.082 m +263.489 408.021 l +S +newpath +251.236 401.865 m +252.368 401.805 l +S +newpath +260.294 401.379 m +261.426 401.319 l +S +newpath +251.752 403.541 m +252.884 403.48 l +S +newpath +260.81 403.055 m +261.942 402.994 l +S +newpath +252.267 405.217 m +253.4 405.156 l +S +newpath +261.325 404.731 m +262.457 404.67 l +S +newpath +252.783 406.892 m +253.915 406.832 l +S +newpath +261.841 406.406 m +262.973 406.345 l +S +newpath +254.997 408.477 m +256.129 408.416 l +S +newpath +264.055 407.991 m +265.187 407.93 l +S +newpath +252.934 401.774 m +254.067 401.714 l +S +newpath +261.992 401.288 m +263.124 401.227 l +S +newpath +253.45 403.45 m +254.582 403.389 l +S +newpath +262.508 402.964 m +263.64 402.903 l +S +newpath +253.966 405.126 m +255.098 405.065 l +S +newpath +263.024 404.639 m +264.156 404.579 l +S +newpath +254.481 406.801 m +255.614 406.74 l +S +newpath +263.539 406.315 m +264.672 406.254 l +S +newpath +256.696 408.386 m +257.828 408.325 l +S +newpath +265.753 407.9 m +266.886 407.839 l +S +newpath +254.633 401.683 m +255.765 401.622 l +S +newpath +263.69 401.197 m +264.823 401.136 l +S +newpath +255.148 403.359 m +256.281 403.298 l +S +newpath +264.206 402.873 m +265.338 402.812 l +S +newpath +255.664 405.034 m +256.796 404.974 l +S +newpath +264.722 404.548 m +265.854 404.488 l +S +newpath +256.18 406.71 m +257.312 406.649 l +S +newpath +265.238 406.224 m +266.37 406.163 l +S +newpath +334.213 416.693 m +337.047 413.858 l +359.725 413.858 l +362.559 416.693 l +closepath +0.8 0.8 0.8 rgb +F +334.213 416.693 m +337.047 413.858 l +359.725 413.858 l +362.559 416.693 l +0 0 0 rgb +S +[34.0158 0 0 -28.3465 331.378 445.039] rect +gsave +0.8 0.8 0.8 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[28.3465 0 0 -22.6772 334.213 442.205] rect +gsave +0.7 0.7 0.7 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[39.6282 -2.12668 -3.43822 -11.171 328.876 412.079] rect +S +newpath +329.886 409.753 m +331.018 409.692 l +S +newpath +327.823 403.05 m +328.955 402.99 l +S +newpath +328.339 404.726 m +329.471 404.665 l +S +newpath +328.855 406.402 m +329.987 406.341 l +S +newpath +329.37 408.077 m +330.503 408.016 l +S +newpath +331.584 409.662 m +332.717 409.601 l +S +newpath +329.522 402.959 m +330.654 402.898 l +S +newpath +330.037 404.635 m +331.169 404.574 l +S +newpath +330.553 406.31 m +331.685 406.25 l +S +newpath +331.069 407.986 m +332.201 407.925 l +S +newpath +333.283 409.571 m +334.415 409.51 l +S +newpath +331.22 402.868 m +332.352 402.807 l +S +newpath +331.736 404.544 m +332.868 404.483 l +S +newpath +332.251 406.219 m +333.384 406.158 l +S +newpath +332.767 407.895 m +333.899 407.834 l +S +newpath +334.981 409.479 m +336.113 409.419 l +S +newpath +332.918 402.777 m +334.05 402.716 l +S +newpath +333.434 404.452 m +334.566 404.392 l +S +newpath +333.95 406.128 m +335.082 406.067 l +S +newpath +334.465 407.804 m +335.598 407.743 l +S +newpath +336.68 409.388 m +337.812 409.327 l +S +newpath +334.617 402.686 m +335.749 402.625 l +S +newpath +335.132 404.361 m +336.265 404.301 l +S +newpath +335.648 406.037 m +336.78 405.976 l +S +newpath +336.164 407.713 m +337.296 407.652 l +S +newpath +338.378 409.297 m +339.51 409.236 l +S +newpath +336.315 402.595 m +337.447 402.534 l +S +newpath +336.831 404.27 m +337.963 404.209 l +S +newpath +337.346 405.946 m +338.479 405.885 l +S +newpath +337.862 407.621 m +338.994 407.561 l +S +newpath +340.076 409.206 m +341.208 409.145 l +S +newpath +338.013 402.503 m +339.146 402.443 l +S +newpath +338.529 404.179 m +339.661 404.118 l +S +newpath +339.045 405.855 m +340.177 405.794 l +S +newpath +339.56 407.53 m +340.693 407.47 l +S +newpath +341.775 409.115 m +342.907 409.054 l +S +newpath +339.712 402.412 m +340.844 402.352 l +S +newpath +340.227 404.088 m +341.36 404.027 l +S +newpath +340.743 405.764 m +341.875 405.703 l +S +newpath +341.259 407.439 m +342.391 407.378 l +S +newpath +343.473 409.024 m +344.605 408.963 l +S +newpath +341.41 402.321 m +342.542 402.26 l +S +newpath +341.926 403.997 m +343.058 403.936 l +S +newpath +342.441 405.672 m +343.574 405.612 l +S +newpath +342.957 407.348 m +344.089 407.287 l +S +newpath +345.171 408.933 m +346.304 408.872 l +S +newpath +343.108 402.23 m +344.241 402.169 l +S +newpath +343.624 403.906 m +344.756 403.845 l +S +newpath +344.14 405.581 m +345.272 405.52 l +S +newpath +344.656 407.257 m +345.788 407.196 l +S +newpath +346.87 408.841 m +348.002 408.781 l +S +newpath +344.807 402.139 m +345.939 402.078 l +S +newpath +345.322 403.814 m +346.455 403.754 l +S +newpath +345.838 405.49 m +346.97 405.429 l +S +newpath +346.354 407.166 m +347.486 407.105 l +S +newpath +348.568 408.75 m +349.7 408.689 l +S +newpath +346.505 402.048 m +347.637 401.987 l +S +newpath +347.021 403.723 m +348.153 403.663 l +S +newpath +347.537 405.399 m +348.669 405.338 l +S +newpath +348.052 407.075 m +349.184 407.014 l +S +newpath +350.266 408.659 m +351.399 408.598 l +S +newpath +359.324 408.173 m +360.456 408.112 l +S +newpath +348.203 401.957 m +349.336 401.896 l +S +newpath +357.261 401.47 m +358.393 401.41 l +S +newpath +348.719 403.632 m +349.851 403.571 l +S +newpath +357.777 403.146 m +358.909 403.085 l +S +newpath +349.235 405.308 m +350.367 405.247 l +S +newpath +358.293 404.822 m +359.425 404.761 l +S +newpath +349.751 406.983 m +350.883 406.923 l +S +newpath +358.808 406.497 m +359.941 406.437 l +S +newpath +351.965 408.568 m +353.097 408.507 l +S +newpath +361.023 408.082 m +362.155 408.021 l +S +newpath +349.902 401.865 m +351.034 401.805 l +S +newpath +358.96 401.379 m +360.092 401.319 l +S +newpath +350.417 403.541 m +351.55 403.48 l +S +newpath +359.475 403.055 m +360.608 402.994 l +S +newpath +350.933 405.217 m +352.065 405.156 l +S +newpath +359.991 404.731 m +361.123 404.67 l +S +newpath +351.449 406.892 m +352.581 406.832 l +S +newpath +360.507 406.406 m +361.639 406.345 l +S +newpath +353.663 408.477 m +354.795 408.416 l +S +newpath +362.721 407.991 m +363.853 407.93 l +S +newpath +351.6 401.774 m +352.732 401.714 l +S +newpath +360.658 401.288 m +361.79 401.227 l +S +newpath +352.116 403.45 m +353.248 403.389 l +S +newpath +361.174 402.964 m +362.306 402.903 l +S +newpath +352.632 405.126 m +353.764 405.065 l +S +newpath +361.689 404.639 m +362.822 404.579 l +S +newpath +353.147 406.801 m +354.28 406.74 l +S +newpath +362.205 406.315 m +363.337 406.254 l +S +newpath +355.361 408.386 m +356.494 408.325 l +S +newpath +364.419 407.9 m +365.551 407.839 l +S +newpath +353.298 401.683 m +354.431 401.622 l +S +newpath +362.356 401.197 m +363.489 401.136 l +S +newpath +353.814 403.359 m +354.946 403.298 l +S +newpath +362.872 402.873 m +364.004 402.812 l +S +newpath +354.33 405.034 m +355.462 404.974 l +S +newpath +363.388 404.548 m +364.52 404.488 l +S +newpath +354.846 406.71 m +355.978 406.649 l +S +newpath +363.904 406.224 m +365.036 406.163 l +S +newpath +362.835 538.584 m +362.835 526.679 l +0.992126 w +[0.0992126 0.992126 ] 0 d +S +pusht +362.835 526.679 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +374.174 524.411 m +374.174 536.317 l +[0.0992126 0.992126 ] 0 d +S +pusht +374.174 536.317 translate +90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +362.834 581.102 m +362.834 569.197 l +[0.0992126 0.992126 ] 0 d +S +pusht +362.834 569.197 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +374.173 566.929 m +374.173 578.835 l +[0.0992126 0.992126 ] 0 d +S +pusht +374.173 578.835 translate +90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +476.22 581.102 m +476.22 569.197 l +[0.0992126 0.992126 ] 0 d +S +pusht +476.22 569.197 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +487.559 566.929 m +487.559 578.835 l +[0.0992126 0.992126 ] 0 d +S +pusht +487.559 578.835 translate +90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +476.22 623.622 m +476.22 611.717 l +[0.0992126 0.992126 ] 0 d +S +pusht +476.22 611.717 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +487.559 609.449 m +487.559 621.355 l +[0.0992126 0.992126 ] 0 d +S +pusht +487.559 621.355 translate +90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +476.22 666.142 m +476.22 654.237 l +[0.0992126 0.992126 ] 0 d +S +pusht +476.22 654.237 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +487.559 651.969 m +487.559 663.875 l +[0.0992126 0.992126 ] 0 d +S +pusht +487.559 663.875 translate +90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +476.22 708.661 m +476.22 696.756 l +[0.0992126 0.992126 ] 0 d +S +pusht +476.22 696.756 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +487.559 694.488 m +487.559 706.394 l +[0.0992126 0.992126 ] 0 d +S +pusht +487.559 706.394 translate +90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +476.22 538.582 m +476.22 526.677 l +[0.0992126 0.992126 ] 0 d +S +pusht +476.22 526.677 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +487.559 524.409 m +487.559 536.315 l +[0.0992126 0.992126 ] 0 d +S +pusht +487.559 536.315 translate +90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +362.834 643.464 m +362.834 631.559 l +[0.0992126 0.992126 ] 0 d +S +pusht +362.834 631.559 translate +-90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +374.173 629.291 m +374.173 641.197 l +[0.0992126 0.992126 ] 0 d +S +pusht +374.173 641.197 translate +90 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +/Times-Roman 12 sf +(...) +291 441 T +newpath +232.441 484.724 m +232.441 467.717 l +368.504 467.717 l +368.504 487.559 l +1 w +S +newpath +252.283 467.717 m +252.283 450.709 l +S +newpath +354.331 467.717 m +354.331 450.709 l +S +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 382 4014 a + currentpoint currentpoint translate 1 0.75989 div 1 0.75989 div scale +neg exch neg exch translate + 382 4014 a 1218 4210 a Fp(Abbildung)i(3.2:)41 +b(DRBD)29 b(im)i(Kernel)1831 5622 y(19)p eop +%%Page: 20 22 +20 21 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)712 +b(3.1.)71 b(DRBD)30 b(IM)g(KERNEL)p 382 299 2989 4 v +382 539 a Fp(Alternativ)g(gibt)g(es)f(auc)m(h)i(die)f(M\366glic)m(hk)m +(eit,)i(eine)e(auf)f(IP-V)-8 b(ernetzung)32 b(aufsetzende)382 +652 y(Implemen)m(tierung)25 b(zu)e(v)m(erw)m(enden.)39 +b(Dieser)23 b(Lo)s(c)m(k-Manager)h(k)m(\366nn)m(te)g(zusammen)f(mit)382 +764 y(einem)31 b(um)g(die)g(exakte)g(Shared-Disk)g(Seman)m(tik)h(erw)m +(eiterten)h(DRBD)d(den)h(Einsatz)382 877 y(v)m(on)g(GFS)f(auf)g(DRBD)g +(erm\366glic)m(hen.)382 1167 y Fn(3.1.1.2)103 b(DRBDs)33 +b(Seman)m(tik)382 1389 y Fp(Jedes)28 b(DRBD-Ger\344t)f(ist)h(einem)g +(der)g(folgenden)g(Zust\344nde,)h(die)f(jederzeit)g(ge\344ndert)382 +1502 y(w)m(erden)k(k)m(\366nnen,)f(zugeordnet:)382 1764 +y(Primary)133 b(Das)34 b(DRBD-Ger\344t)g(k)-5 b(ann)34 +b(zum)g(Sc)m(hreib)s(en)i(und)e(Lesen)h(ge\366\033net)f(w)m(er-)839 +1877 y(den.)63 b(Es)37 b(k)-5 b(ann)38 b(mit)g(DRBD-Ger\344ten)g(auf)f +(anderen)i(Knoten,)h(die)e(im)839 1990 y(sekund\344ren)31 +b(Zustand)g(sind,)g(v)m(erbunden)h(sein.)382 2177 y(Secondary)77 +b(Das)23 b(DRBD-Ger\344t)h(k)-5 b(ann)24 b(n)m(ur)g(zum)g(Lesen)h +(ge\366\033net)f(w)m(erden.)40 b(Es)23 b(k)-5 b(ann)839 +2290 y(mit)23 b(anderen)g(DRBD-Ger\344ten)g(auf)g(anderen)g(Knoten)g(v) +m(erbunden)h(sein.)382 2553 y(Die)31 b(Einf\374hrung)h(dieser)g +(Zust\344nde)g(en)m(tspric)m(h)m(t)h(der)e(V)-8 b(erw)m(endung)34 +b(des)d(SCSI-Lo)s(c)m(k-)382 2666 y(K)m(ommandos)h(v)m(on)f(HP)f(auf)g +(dem)h(Shared)h(SCSI-Bus)e(\(siehe)h(2.3.3.3\).)382 2959 +y Fo(3.1.2)112 b(Single)37 b(P)m(oin)m(ts)e(of)j(F)-9 +b(ailure)382 3180 y Fp(Ein)40 b(Single)g(P)m(oin)m(t)h(of)d(F)-8 +b(ailure)41 b(\(=SPOF\))f(ist)f(eine)h(K)m(omp)s(onen)m(te)h(eines)f +(Systems,)382 3293 y(deren)i(Ausfall)f(den)h(Ausfall)f(des)g(ganzen)i +(Systems)e(b)s(edeutet.)74 b(Ein)42 b(HA-Cluster)382 +3406 y(sollte)30 b(k)m(einen)i(SPOF)f(aufw)m(eisen.)382 +3696 y Fn(3.1.2.1)103 b(F)-9 b(estplatten)37 b(und)d(deren)g(K)m(on)m +(troller)382 3917 y Fp(Legt)24 b(man)g(die)f(Daten)h(auf)f(einem)h +(Massensp)s(eic)m(herger\344t)h(ab,)g(das)e(v)m(on)h(allen)f(Knoten)382 +4030 y(des)i(Clusters)g(aus)g(zug\344nglic)m(h)j(ist,)e(so)e(ist)h(der) +h(Zugri\033sw)m(eg)g(ein)g(prinzipieller)h(SPOF.)382 +4193 y(Dieser)i(SPOF)h(existiert)g(b)s(ei)f(DRBD)f(nic)m(h)m(t.)42 +b(F\344llt)29 b(die)h(F)-8 b(estplatte)30 b(o)s(der)g(eine)f(K)m(om-) +382 4306 y(p)s(onen)m(te)24 b(auf)e(dem)h(Zugri\033sw)m(eg)h(zur)f(F)-8 +b(estplatte)24 b(aus)e(\(z.B.)h(K)m(on)m(troller,)k(Kab)s(el,)d(PCI-) +382 4419 y(Slot,)32 b(etc.\),)f(wird)h(einfac)m(h)g(der)f(gesam)m(te)h +(Knoten)g(als)f(ausgefallen)h(b)s(etrac)m(h)m(tet,)h(und)382 +4532 y(der)h(zw)m(eite)g(Knoten,)h(der)f(ja)f(eb)s(enfalls)g(mit)h +(einer)g(K)m(opie)g(der)g(Daten)g(ausgestattet)382 4645 +y(ist,)c(\374b)s(ernimm)m(t.)382 4934 y Fn(3.1.2.2)103 +b(Netzw)m(erk)382 5156 y Fp(F)-8 b(alls)37 b(das)g(Netzw)m(erk)h(zwisc) +m(hen)g(den)g(Knoten)g(des)f(Clusters)g(ausf\344llt,)i(ist)e(dies)g +(f\374r)382 5269 y(Cluster)e(b)s(eider)g(Arten)g(gleic)m(herma\377en)j +(ein)d(Problem)h(\(split)f(brain)g(problem\).)55 b(Ist)382 +5382 y(das)40 b(Netzw)m(erk)h(zu)g(den)f(Clien)m(ts)i(nic)m(h)m(t)f(un) +m(terbro)s(c)m(hen)i(o)s(der)e(handelt)g(es)f(sic)m(h)h(n)m(ur)1831 +5622 y(20)p eop +%%Page: 21 23 +21 22 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)701 +b(3.2.)71 b(DIE)30 b(PR)m(OTOKOLLE)p 382 299 2989 4 v +1309 1116 a + currentpoint currentpoint translate 0.74356 0.74356 scale neg exch +neg exch translate + 1309 1116 a @beginspecial 50 @llx 682 @lly +233 @urx 790 @ury 1830 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//model.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Thu May 11 10:32:34 2000 +%%Title: model.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 50 682 233 790 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +[56.6929 0 0 -28.3464 56.6929 765.354] rect +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[56.6929 0 0 -28.3464 170.079 765.354] rect +S +newpath +113.386 751.181 m +170.079 751.181 l +S +newpath +85.0394 737.008 m +85.0394 722.835 l +198.425 722.835 l +198.425 737.008 l +[3 3 ] 0 d +S +/Times-Roman 12 sf +(inter-cluster network) +97 779 T +(node) +73 748 T +(node) +186 748 T +newpath +150.236 773.858 m +144.567 754.016 l +0.283465 w +[] 0 d +S +pusht +144.567 754.016 translate +-105.945 rotate +[ ] 0 d +-6 3 m +1 0 l +-6 -3 l +S +popt +(clients) +124 685 T +newpath +141.732 722.835 m +141.732 700.157 l +1 w +[3 3 ] 0 d +S +pusht +141.732 700.157 translate +-90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 1309 1116 a + currentpoint currentpoint translate 1 0.74356 div 1 0.74356 div scale +neg exch neg exch translate + 1309 1116 a 1091 1312 a Fp(Abbildung)h(3.3:)41 +b(Mo)s(dell)30 b(des)h(HA-Clusters)382 1587 y(um)42 b(eine)g(v)m +(or\374b)s(ergehende)i(St\366rung)f(des)e(Netzw)m(erk)m(es,)46 +b(k)-5 b(ann)42 b(es)f(dazu)h(k)m(ommen,)382 1700 y(da\377)i(b)s(eide)h +(Knoten)g(annehmen,)k(da\377)44 b(der)g(jew)m(eils)h(andere)g +(ausgefallen)g(ist.)81 b(Im)382 1813 y(g\374nstigsten)30 +b(F)-8 b(all)29 b(k)m(\366nnen)h(die)f(Clien)m(ts)h(k)m(einen)g(der)f +(Cluster-Knoten)i(erreic)m(hen,)g(im)382 1926 y(sc)m(hlimmsten)h(F)-8 +b(all)31 b(zerst\366rt)g(der)f(aktiv)m(e)h(Knoten)g(den)g(Datenstand.) +382 2089 y(Damit)25 b(der)g(Ausfall)g(des)f(Netzw)m(erk)m(es)i(nic)m(h) +m(t)h(zu)e(diesem)g(skizzierten)g(Szenario)h(f\374hrt,)382 +2202 y(sollte)41 b(es)g(einen)h(w)m(eiteren)h(K)m(omm)m(unik)-5 +b(ationsw)m(eg)45 b(zwisc)m(hen)d(den)g(Knoten)g(geb)s(en.)382 +2315 y(Hierf\374r)d(wird)g(gerne)g(ein)g(serielles)g(Kab)s(el)g(v)m +(erw)m(endet,)j(da)d(serielle)g(Sc)m(hnittstellen)382 +2428 y(meistens)c(v)m(orhanden)h(sind)e(und)h(die)f(K)m(omm)m(unik)-5 +b(ation)38 b(\374b)s(er)c(die)h(serielle)g(Sc)m(hnitt-)382 +2541 y(stelle)30 b(nic)m(h)m(t)i(die)f(F)-8 b(unktion)32 +b(des)e(IP-Subsystems)g(im)h(Kernel)g(erfordert.)382 +2877 y Fj(3.2)130 b(Die)44 b(Protok)l(olle)382 3129 y +Fp(Der)k(Nac)m(h)m(teil,)54 b(der)48 b(m\366glic)m(herw)m(eise)j(b)s +(ei)d(der)g(V)-8 b(erw)m(endung)50 b(eines)e(IP-basierten)382 +3242 y(Netzw)m(erk)m(es)35 b(gegen)m(\374b)s(er)h(eines)e(SCSI-Busses)g +(en)m(tsteh)m(t,)j(ist,)e(da\377)f(die)h(Zeit,)g(bis)f(ein)382 +3355 y(einzelners)j(P)m(ak)m(et)g(sein)e(Ziel)h(erreic)m(h)m(t,)k(auf) +35 b(einem)i(IP-Netzw)m(erk)f(h\366her)h(sein)e(k)-5 +b(ann)382 3468 y(als)30 b(auf)g(einem)h(SCSI-Bus)g(b)s(ei)f(gleic)m +(her)i(Bandbreite.)382 3631 y(Dieser)38 b(Nac)m(h)m(teil)j(wird)e(b)s +(esonders)f(deutlic)m(h,)k(w)m(enn)e(in)e(den)h(Knoten)h(des)e(DRBD-) +382 3744 y(Clusters)44 b(auc)m(h)h(SCSI-F)-8 b(estplatten)46 +b(v)m(erw)m(endet)g(w)m(erden.)82 b(Die)44 b(V)-8 b(erz\366gerung,)49 +b(die)382 3857 y(durc)m(h)34 b(die)f(\334b)s(ertragung)h(\374b)s(er)f +(das)g(IP-Netzw)m(erk)h(en)m(tsteh)m(t,)h(b)s(etri\033t)e(n)m(ur)h +(DRBD-)382 3970 y(basierte)48 b(Cluster,)j(w)m(\344hrend)e(die)e(V)-8 +b(erz\366gerung)49 b(des)e(SCSI-Busses)g(den)g(DRBD-)382 +4083 y(Cluster)31 b(und)g(Shared)g(SCSI-Bus-Cluster)g(gleic)m +(herma\377en)i(b)s(etri\033t.)382 4245 y(Aus)24 b(diesem)i(Grund)f(ist) +g(DRBD)g(mit)g(drei)h(Protok)m(ollen)h(ausgestattet,)g(die)e(v)m(ersc)m +(hie-)382 4358 y(dene)32 b(Abstufungen)h(des)e(Durc)m(hsatz-K)m +(onsistenz-K)m(ompromisses)36 b(bieten.)46 b(F\374r)32 +b(die)382 4471 y(Betrac)m(h)m(tung)c(der)e(Protok)m(olle)h(im)e(F)-8 +b(alle)26 b(des)g(Ausfalls)e(einer)i(K)m(omp)s(onen)m(te)i(wird)e(das) +382 4584 y(in)k(Abbildung)i(3.3)e(dargestellte)i(Mo)s(dell)e(v)m(erw)m +(endet.)382 4747 y(Dab)s(ei)c(wird)h(da)m(v)m(on)g(ausgegangen,)h +(da\377)f(jede)f(der)g(K)m(omp)s(onen)m(ten,)k(die)c(b)s(eiden)h(Kno-) +382 4860 y(ten)j(und)g(das)f(v)m(erbindende)i(Netzw)m(erk,)g(en)m(t)m +(w)m(eder)h(funktionieren)f(o)s(der)f(nic)m(h)m(t)h(funk-)382 +4973 y(tionieren.)1831 5622 y(21)p eop +%%Page: 22 24 +22 23 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)701 +b(3.2.)71 b(DIE)30 b(PR)m(OTOKOLLE)p 382 299 2989 4 v +382 539 a Fo(3.2.1)112 b(Protok)m(oll)35 b(A)382 748 +y Fp(Bei)e(Protok)m(oll)i(A)d(wird)i(eine)f(Sc)m(hreibanforderung)j +(als)d(abgesc)m(hlossen)h(b)s(etrac)m(h)m(tet,)382 861 +y(sobald)26 b(der)g(Sc)m(hreib)m(v)m(organg)j(auf)c(die)h(ph)m(ysisc)m +(he)h(F)-8 b(estplatte)27 b(abgesc)m(hlossen)g(ist)e(und)382 +974 y(die)g(Daten)g(gesendet)h(wurden.)39 b(Da)25 b(TCP)-8 +b(,)26 b(das)f(v)m(erw)m(endete)h(IP-Protok)m(oll,)i(ein)d(p)s(eer-)382 +1087 y(to-p)s(eer)f(Protok)m(oll)i(ist,)f(funktioniert)g(der)f(K)m(omm) +m(unik)-5 b(ationsk)g(anal)27 b(n)m(ur)e(solange)g(b)s(ei-)382 +1200 y(de)30 b(Endpunkte)i(der)f(K)m(omm)m(unik)-5 b(ation)33 +b(funktionieren.)382 1351 y(F\344llt)c(n)m(un)h(der)f(sendende)g +(Knoten)h(unmittelbar)h(nac)m(h)f(dem)f(Absc)m(hic)m(k)m(en)h(eines)f +(Da-)382 1463 y(tenpak)m(etes)d(aus,)g(so)f(k)-5 b(ann)25 +b(TCP)h(nic)m(h)m(t)h(sic)m(herstellen,)g(da\377)f(dieses)f(Datenpak)m +(et)h(auc)m(h)382 1576 y(b)s(eim)37 b(empfangenden)i(Knoten)f(ank)m +(omm)m(t.)63 b(\334b)s(ernimm)m(t)39 b(n)m(un)f(der)f(no)s(c)m(h)h +(funktio-)382 1689 y(nierende)d(Knoten)g(das)f(Service,)h(k)-5 +b(ann)34 b(es)g(sein,)g(da\377)h(er)f(die)g(letzten)h(Datenpak)m(ete,) +382 1802 y(die)28 b(der)g(gerade)h(ausgefallene)f(Knoten)h(no)s(c)m(h)f +(gesendet)h(hat,)g(nic)m(h)m(t)g(b)s(ek)m(ommen)g(hat.)382 +1953 y(Dieses)d(V)-8 b(erhalten)28 b(ist)e(f\374r)g(eine)h +(transaktionsbasierte)h(An)m(w)m(endung)h(nic)m(h)m(t)f(akzepta-)382 +2066 y(b)s(el.)45 b(Eine)33 b(T)-8 b(ransaktion)34 b(m)m(u\377)f(p)s +(ermanen)m(t)g(o)s(der)g(gar)f(nic)m(h)m(t)i(durc)m(hgef\374hrt)g(w)m +(erden.)382 2179 y(Hat)22 b(der)g(sendende)h(Knoten,)i(b)s(ev)m(or)d +(er)g(ausgefallen)h(ist,)h(dem)e(Clien)m(t)i(mitgeteilt,)h(da\377)382 +2292 y(die)g(T)-8 b(ransaktion)26 b(funktioniert)g(hat,)g(sind)f(die)g +(V)-8 b(er\344nderungen)27 b(durc)m(h)g(die)e(T)-8 b(ransak-)382 +2405 y(tion)29 b(nac)m(h)h(der)f(\334b)s(ernahme)g(durc)m(h)h(den)f(zw) +m(eiten)h(Knoten)g(nic)m(h)m(t)g(mehr)g(v)m(orhanden.)382 +2518 y(Eine)h(der)g(grundlegenden)h(Eigensc)m(haften)h(einer)e(T)-8 +b(ransaktion)31 b(wurde)h(v)m(erletzt.)382 2668 y(Mit)23 +b(Protok)m(oll)i(A)d(k)-5 b(ann)23 b(k)m(ein)h(Ausfall)e(einer)i(K)m +(omp)s(onen)m(te)h(\(des)f(Mo)s(dells)e(aus)h(Abbil-)382 +2781 y(dung)29 b(3.3\))f(toleriert)h(w)m(erden,)h(ohne)f(die)f(T)-8 +b(ransaktionseigensc)m(haften)31 b(zu)d(v)m(erletzen.)382 +2894 y(Protok)m(oll)23 b(A)d(\034ndet)i(jedo)s(c)m(h)g(seine)f(An)m(w)m +(endung,)26 b(w)m(enn)c(auf)f(hohen)h(Datendurc)m(hsatz,)382 +3007 y(nic)m(h)m(t)32 b(ab)s(er)e(auf)h(die)f(T)-8 b +(ransaktionseigensc)m(haften)33 b(w)m(ertgelegt)g(wird.)382 +3283 y Fo(3.2.2)112 b(Protok)m(oll)35 b(B)382 3492 y +Fp(Bei)e(der)h(V)-8 b(erw)m(endung)36 b(v)m(on)e(Protok)m(oll)h(B)e +(wird)h(ein)g(Sc)m(hreib)m(v)m(organg)j(dann)d(als)f(ab-)382 +3605 y(gesc)m(hlossen)26 b(b)s(etrac)m(h)m(tet,)j(sobald)d(der)f(Sc)m +(hreib)m(v)m(organg)k(auf)d(die)f(lok)-5 b(ale)26 b(Platte)h(abge-)382 +3718 y(sc)m(hlossen)22 b(ist)f(und)h(eine)g(Empfangsb)s(est\344tigung)h +(v)m(om)f(zw)m(eiten)h(Knoten)f(eingetro\033en)382 3831 +y(ist.)382 3982 y(Im)40 b(Gegensatz)g(zu)g(Protok)m(oll)i(A)d(bleib)s +(en)i(b)s(eim)f(Ausfall)f(einer)i(K)m(omp)s(onen)m(te)h(die)382 +4095 y(T)-8 b(ransaktionseigensc)m(haften)44 b(erhalten.)75 +b(F)-8 b(allen)42 b(jedo)s(c)m(h)g(zw)m(ei)h(K)m(omp)s(onen)m(ten)h +(auf)382 4208 y(einmal)c(aus,)h(so)d(k)-5 b(ann)40 b(es)e(auc)m(h)i(b)s +(ei)f(diesem)g(Protok)m(oll)i(zu)e(einer)h(V)-8 b(erletzung)40 +b(der)382 4321 y(T)-8 b(ransaktionseigensc)m(haften)33 +b(k)m(ommen.)42 b(Ein)31 b(Beispiel:)639 4490 y(Beide)i(Knoten)h(eines) +f(Clusters)g(fallen)g(in)g(kurzem)g(zeitlic)m(hen)i(Abstand)e(w)m(e-) +639 4603 y(gen)k(eines)f(Stromausfalls)h(aus.)58 b(Der)36 +b(prim\344re)h(Knoten)g(teilt)g(einem)g(Clien)m(t)639 +4716 y(mit,)c(da\377)f(eine)h(T)-8 b(ransaktion)33 b(abgesc)m(hlossen)g +(ist,)f(danac)m(h)i(f\344llt)e(er)g(aus.)45 b(Der)639 +4829 y(sekund\344re)27 b(Knoten)h(hat)f(zw)m(ar)h(den)f(Daten)m(blo)s +(c)m(k)h(empfangen)g(und)f(die)g(Emp-)639 4942 y(fangsb)s +(est\344tigung)39 b(zur\374c)m(k)g(an)f(den)g(prim\344ren)i(Knoten)f +(gesendet,)i(f\344llt)d(je-)639 5055 y(do)s(c)m(h)31 +b(aus,)f(b)s(ev)m(or)h(der)g(Daten)m(blo)s(c)m(k)g(auf)g(die)f(F)-8 +b(estplatte)32 b(gesc)m(hrieb)s(en)g(wird.)639 5168 y(En)m(tsc)m +(heidet)f(der)e(Cluster-Manager)h(nac)m(h)f(dem)g(Stromausfall,)h +(da\377)e(der)h(an-)639 5281 y(dere)34 b(Knoten)g(das)e(Service)i(an)m +(bieten)h(soll,)e(so)g(sind)g(die)g(Auswirkungen)h(der)639 +5394 y(letzten)d(T)-8 b(ransaktion)32 b(v)m(erloren.)1831 +5622 y(22)p eop +%%Page: 23 25 +23 24 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)448 +b(3.3.)71 b(SCHREIBOPERA)-8 b(TIONEN)p 382 299 2989 4 +v 382 539 a Fp(Dieses)30 b(Problem)i(k)m(\366nn)m(te)h(man)e(dadurc)m +(h)h(l\366sen,)g(da\377)f(der)g(Cluster-Mananger)h(nac)m(h)382 +652 y(dem)39 b(Ausfall)f(b)s(eider)h(Knoten,)j(das)c(Service)h(wieder)h +(auf)e(jenem)h(Knoten)h(startet,)382 764 y(auf)30 b(dem)h(es)f(zuletzt) +h(gelaufen)g(ist.)382 1044 y Fo(3.2.3)112 b(Protok)m(oll)35 +b(C)382 1257 y Fp(Bei)d(Protok)m(oll)h(C)f(wird)h(ein)f(Sc)m(hreib)m(v) +m(organg)j(abgesc)m(hlossen,)e(sobald)g(der)f(Sc)m(hreib-)382 +1370 y(v)m(organg)41 b(auf)f(die)g(lok)-5 b(ale)40 b(Platte)h(abgesc)m +(hlossen)g(ist)f(und)h(eine)f(Best\344tigung)h(v)m(om)382 +1483 y(zw)m(eiten)d(Knoten)g(eingetro\033en)g(ist,)g(die)f(b)s(esagt,)h +(da\377)f(der)g(Daten)m(blo)s(c)m(k)h(auc)m(h)g(dort)382 +1596 y(erfolgreic)m(h)32 b(gesc)m(hrieb)s(en)g(wurde.)382 +1749 y(Mit)e(Protok)m(oll)i(C)f(bleibt)g(die)f(T)-8 b(ransaktionsseman) +m(tik)33 b(auf)d(jeden)h(F)-8 b(all)31 b(erhalten.)382 +1903 y(Bei)k(Protok)m(oll)i(B)e(und)h(C)f(m)m(u\377)h(b)s(ei)f(Ausfall) +g(des)g(v)m(erbindenden)i(Netzw)m(erk)m(es)f(o)s(der)382 +2016 y(des)h(zw)m(eiten)j(Cluster-Knotens)f(der)f(Empfang)g(der)g(no)s +(c)m(h)g(ausstehenden)h(Best\344ti-)382 2129 y(gungen)45 +b(sim)m(uliert)h(w)m(erden.)83 b(Das)44 b(Blo)s(c)m(k-IO-System)h(un)m +(ter)g(Lin)m(ux)g(erlaubt)h(n)m(ur)382 2242 y(eine)36 +b(b)s(egrenzte)h(Anzahl)g(nic)m(h)m(t)g(abgesc)m(hlossener)h +(Anforderungen,)h(und)d(es)g(w\374rde)382 2355 y(blo)s(c)m(kieren,)31 +b(w)m(enn)h(nic)m(h)m(t)g(alle)f(Anforderungen)g(abgesc)m(hlossen)h(w)m +(erden.)382 2678 y Fj(3.3)130 b(Sc)l(hreib)t(op)t(erationen)382 +2921 y Fp(F\374r)30 b(viele)g(Filesysteme)f(ist)h(die)g(Reihenfolge,)g +(in)g(der)g(b)s(estimm)m(te)h(Daten)m(bl\366)s(c)m(k)m(e)h(auf)382 +3034 y(die)25 b(F)-8 b(estplatte)27 b(gesc)m(hrieb)s(en)f(w)m(erden,)i +(v)m(on)d(en)m(tsc)m(heidender)j(Bedeutung.)41 b(Zum)25 +b(Bei-)382 3147 y(spiel)30 b(m)m(u\377)h(ein)f(Journaling-Filesystem)i +(v)m(or)e(jeder)g(Metadatenaktualisierung)i(eine)382 +3260 y(T)-8 b(ransaktion)32 b(in)e(den)h(Journalb)s(ereic)m(h)j(sc)m +(hreib)s(en,)d(w)m(ob)s(ei)h(der)e(Commit-Record)j(als)382 +3373 y(letzter)e(gesc)m(hrieb)s(en)h(w)m(erden)g(m)m(u\377.)382 +3527 y(Un)m(ter)39 b(Lin)m(ux)g(wird)f(derzeit)h(explizit)g(auf)f(den)g +(Absc)m(hlu\377)h(jener)f(Sc)m(hreib)s(op)s(eratio-)382 +3640 y(nen)j(gew)m(artet,)46 b(die)41 b(v)m(or)h(den)f(n\344c)m(hsten)h +(Sc)m(hreib)s(op)s(erationen)i(auf)d(die)g(F)-8 b(estplatte)382 +3753 y(gesc)m(hrieb)s(en)32 b(w)m(erden)g(m)m(\374ssen,)f(b)s(ev)m(or)g +(die)g(folgende)g(Sc)m(hreib)s(op)s(eration)i(in)d(Auftrag)382 +3865 y(geb)s(eb)s(en)g(wird.)382 4019 y(Damit)40 b(DRBD)f(auf)g(dem)h +(sekund\344ren)g(Knoten)h(alle)e(Sc)m(hreib)s(op)s(erationen)k(in)c +(der)382 4132 y(gleic)m(hen)32 b(Reihenfolge)e(ausf\374hrt,)g(in)h(der) +f(sie)g(auf)f(dem)i(prim\344ren)g(Knoten)g(v)m(om)g(IO-)382 +4245 y(System)36 b(an)h(den)g(T)-8 b(reib)s(er)37 b(gesendet)g(wurden,) +i(m)m(\374\377te)f(der)f(Algorithm)m(us)h(wie)e(folgt)382 +4358 y(aussehen:)493 4584 y(1.)46 b(Empfange)32 b(einen)f(Blo)s(c)m(k)f +(v)m(om)h(Netzw)m(erk.)493 4763 y(2.)46 b(Sc)m(hreib)s(e)32 +b(diesen)e(Blo)s(c)m(k)h(auf)f(die)h(F)-8 b(estplatte.)493 +4942 y(3.)46 b(W)-8 b(arte,)31 b(bis)g(die)f(Sc)m(hreib)s(op)s(eration) +j(abgesc)m(hlossen)e(ist.)382 5168 y(Dieser)41 b(restriktiv)m(e)h +(Algorithm)m(us)g(w\374rde)g(w)m(ahrsc)m(heinlic)m(h)i(so)m(w)m(ohl)f +(den)e(prim\344ren)382 5281 y(Knoten)26 b(bremsen,)i(als)d(auc)m(h)h +(das)f(IO-System)h(des)f(sekund\344ren)h(Knotens)g(nic)m(h)m(t)h(aus-) +382 5394 y(lasten)c(k)m(\366nnen.)39 b(Der)23 b(Datendurc)m(hsatz)i(k) +-5 b(ann)22 b(w)m(esen)m(tlic)m(h)k(v)m(erb)s(essert)c(w)m(erden,)k(w)m +(enn)1831 5622 y(23)p eop +%%Page: 24 26 +24 25 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)448 +b(3.3.)71 b(SCHREIBOPERA)-8 b(TIONEN)p 382 299 2989 4 +v 382 539 a Fp(das)29 b(Empfangen)i(v)m(om)e(Netzw)m(erk)i(und)e(das)g +(Sc)m(hreib)s(en)i(auf)e(die)h(F)-8 b(estplatte)30 b(parallel)382 +652 y(statt\034nden.)382 932 y Fo(3.3.1)112 b(Abh\344ngigk)m(eiten)382 +1145 y Fp(Ob)32 b(ein)g(b)s(estimm)m(ter)h(Daten)m(blo)s(c)m(k)g(v)m +(or)f(einem)h(anderen)f(Daten)m(blo)s(c)m(k)i(auf)d(die)h(F)-8 +b(est-)382 1257 y(platte)24 b(gesc)m(hrieb)s(en)g(w)m(erden)h(m)m +(u\377,)h(w)m(ei\377)e(leider)g(n)m(ur)g(das)f(Filesystem.)38 +b(Besteh)m(t)24 b(diese)382 1370 y(Not)m(w)m(endigk)m(eit,)30 +b(so)c(existiert)g(zwisc)m(hen)i(dem)e(Absc)m(hlu\377)i(der)e(Sc)m +(hreib)s(op)s(eration)j(des)382 1483 y(ersten)g(Blo)s(c)m(k)m(es)f(und) +h(dem)g(Sc)m(hreibb)s(efehl)h(f\374r)e(den)g(zw)m(eiten)i(Blo)s(c)m(k)f +(eine)f(Abh\344ngig-)382 1596 y(k)m(eit.)382 1750 y(Es)d(k)-5 +b(ann)26 b(k)m(eine)g(Abh\344ngigk)m(eit)h(zwisc)m(hen)g(zw)m(ei)f +(Bl\366)s(c)m(k)m(en)h(geb)s(en,)f(w)m(enn)h(der)f(Sc)m(hreib-)382 +1863 y(b)s(efehl)34 b(f\374r)g(den)h(zw)m(eiten)h(Blo)s(c)m(k)f(gegeb)s +(en)g(wird,)h(b)s(ev)m(or)e(die)h(Sc)m(hreib)s(op)s(eration)i(des)382 +1976 y(ersten)31 b(abgesc)m(hlossen)g(ist.)40 b(Ein)31 +b(Beispiel:)447 2606 y @beginspecial 22 @llx 758 @lly +365 @urx 817 @ury 3430 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//block_timing_1.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Mon Apr 17 14:18:40 2000 +%%Title: block_timing_1.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 22 758 365 817 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +newpath +141.733 807.876 m +141.733 765.356 l +340.158 765.356 l +0 0 0 rgb +0.566929 w +0 j +0 J +[] 0 d +S +pusht +340.158 765.356 translate +0 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +/Times-Roman 12 sf +(Schreiboperation fertig) +25 767 T +(Schreibaufforderung) +36 787 T +newpath +147.496 784.968 m +158.835 784.968 l +1 w +S +newpath +164.504 784.968 m +175.842 784.968 l +S +newpath +181.512 784.968 m +192.85 784.968 l +S +newpath +198.52 784.968 m +209.858 784.968 l +S +newpath +232.535 784.968 m +249.543 784.968 l +S +newpath +260.882 784.968 m +266.551 784.968 l +272.22 784.968 l +S +(A) +148 787 T +(B) +166 787 T +(C) +183 787 T +(D) +182 799 T +(E) +200 787 T +(F) +237 787 T +(G) +262 787 T +(H) +262 799 T +newpath +204.189 782.134 m +204.189 779.299 l +S +newpath +215.528 782.134 m +215.528 779.299 l +S +newpath +241.039 782.134 m +241.039 779.299 l +S +newpath +263.717 782.134 m +263.717 779.299 l +S +newpath +269.386 782.134 m +269.386 779.299 l +S +newpath +285.056 782.134 m +285.056 779.299 l +S +newpath +296.395 782.134 m +296.395 779.299 l +S +newpath +307.734 782.134 m +307.734 779.299 l +S +(D) +200 768 T +(A) +211 768 T +(C) +237 768 T +(E) +258 768 T +(F) +268 768 T +(H) +280 768 T +(G) +292 768 T +(B) +303 768 T +newpath +238.205 799.141 m +215.528 810.48 198.52 804.811 195.685 804.811 c +0.283465 w +S +pusht +195.685 804.811 translate +180 rotate +[ ] 0 d +-6 3 m +1 0 l +-6 -3 l +S +popt +newpath +241.039 799.141 m +195.685 835.992 156 796.307 156 796.307 c +S +pusht +156 796.307 translate +-135 rotate +[ ] 0 d +-6 3 m +1 0 l +-6 -3 l +S +popt +(Zeit) +342 769 T +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 382 2830 a(Es)f(folgen)h(n)m(un)g(ein)g(paar)g +(Erl\344uterungen)i(zum)d(Diagramm:)382 2943 y(Die)37 +b(zeitlic)m(he)h(Ausdehn)m(ung,)i(mit)d(der)g(die)g(\334b)s(ergab)s(e)g +(v)m(on)g(Daten)m(bl\366)s(c)m(k)m(en)i(an)e(das)382 +3056 y(IO-System)32 b(dargestellt)h(ist,)g(en)m(tspric)m(h)m(t)h(einem) +f(Aufruf)f(v)m(on)g(ll_rw_blo)s(c)m(k\(\).)48 b(Aus)382 +3169 y(der)25 b(Abbildung)g(ist)f(ersic)m(h)m(tlic)m(h,)k(da\377)d(auc) +m(h)g(mehrere)h(Bl\366)s(c)m(k)m(e)f(auf)f(einmal)h(\374b)s(ergeb)s(en) +382 3282 y(w)m(erden)38 b(k)m(\366nnen)g(und)f(da\377)g(Aufrufe)g(v)m +(on)g(ll_rw_blo)s(c)m(k\(\))i(auc)m(h)e(v)m(ersc)m(hieden)i(lang)382 +3395 y(dauern)e(k)m(\366nnen,)h(denn)f(ll_rw_blo)s(c)m(k\(\))g(k)-5 +b(ann)36 b(blo)s(c)m(kiert)h(w)m(erden.)59 b(Der)36 b(Absc)m(hlu\377) +382 3508 y(einer)31 b(Sc)m(hreib)s(op)s(eration)h(ist)e(als)g +(Zeitpunkt)h(dargestellt,)h(der)f(dem)f(Zeitpunkt)i(en)m(t-)382 +3621 y(spric)m(h)m(t,)27 b(zu)d(dem)h(das)f(upto)s(date)h(Bit)f(im)h(k) +m(orresp)s(ondierenden)h(Bu\033er-Head)f(gesetzt)382 +3734 y(wird.)382 3888 y(Zwisc)m(hen)36 b(den)f(Daten)m(bl\366)s(c)m(k)m +(en)i(A,)d(B,)g(C,)h(D)f(und)h(E)g(k)-5 b(ann)35 b(es)f(k)m(eine)h +(Abh\344ngigk)m(eit)382 4001 y(geb)s(en,)43 b(da)d(v)m(or)g(deren)h(Sc) +m(hreibb)s(efehlen)h(k)m(eine)e(Sc)m(hreib)s(op)s(eration)i(abgesc)m +(hlossen)382 4114 y(wurde.)f(F)28 b(k)-5 b(ann)29 b(ab)s(er)f(v)m(on)h +(A)f(und)h(D)g(abh\344ngen,)h(da)f(der)g(Sc)m(hreibb)s(efehl)h(f\374r)e +(F)h(erst)382 4227 y(erteilt)h(wurde,)g(nac)m(hdem)h(im)e(System)g(b)s +(ek)-5 b(ann)m(t)30 b(wurde,)g(da\377)f(A)g(und)g(D)g(v)m +(ollst\344ndig)382 4339 y(auf)37 b(die)h(F)-8 b(estplatte)38 +b(gesc)m(hrieb)s(en)h(wurden.)62 b(Eb)s(enso)38 b(k)-5 +b(ann)37 b(es)g(eine)h(Abh\344ngigk)m(eit)382 4452 y(v)m(on)28 +b(G)e(und)i(H)f(zu)g(A,)g(C)g(und)h(D)f(geb)s(en.)40 +b(Es)27 b(k)-5 b(ann)27 b(ab)s(er)h(k)m(eine)g(Abh\344ngigk)m(eit)g(v)m +(on)g(H)382 4565 y(und)f(G)f(zu)g(E)h(und)g(F)f(geb)s(en.)39 +b(Ob)27 b(diese)f(Abh\344ngigk)m(eit)i(wirklic)m(h)g(existiert,)f(w)m +(ei\377)h(n)m(ur)382 4678 y(der)36 b(Auftraggeb)s(er)f(der)h(Sc)m +(hreib)s(op)s(erationen)i(\(das)d(Filesystem\).)56 b(Auf)34 +b(der)i(Eb)s(ene)382 4791 y(eines)30 b(F)-8 b(estplatten)m(treib)s(ers) +33 b(darf)d(man)h(k)m(eine)g(m\366glic)m(he)h(Abh\344ngigk)m(eit)g(v)m +(erletzen.)382 5068 y Fn(3.3.1.1)103 b(W)-9 b(rite)36 +b(Barriers)382 5281 y Fp(Diese)f(Erk)m(enn)m(tnis)i(erm\366glic)m(h)m +(t)h(es,)e(einen)g(Algorithm)m(us)h(anzugeb)s(en,)g(der)f(Sc)m(hran-) +382 5394 y(k)m(en)25 b(\(write)h(barriers\),)i(\374b)s(er)d(die)g(Sc)m +(hreibanforderungen)k(nic)m(h)m(t)e(v)m(ersc)m(hob)s(en)f(w)m(erden) +1831 5622 y(24)p eop +%%Page: 25 27 +25 26 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)448 +b(3.3.)71 b(SCHREIBOPERA)-8 b(TIONEN)p 382 299 2989 4 +v 382 539 a Fp(d\374rfen,)31 b(erzeugt.)493 801 y(1.)46 +b(Jeder)30 b(Blo)s(c)m(k,)g(der)f(gesc)m(hrieb)s(en)i(w)m(erden)g(m)m +(u\377,)f(wird)g(zu)f(einer)h(Menge)g(hinzu-)609 914 +y(gef\374gt.)493 1101 y(2.)46 b(Ist)31 b(das)h(Sc)m(hreib)s(en)h(einer) +g(der)f(Bl\366)s(c)m(k)m(e)g(aus)g(der)g(Menge)g(abgesc)m(hlossen,)i +(wird)609 1214 y(die)d(Menge)g(geleert,)g(und)g(eine)g(Sc)m(hrank)m(e)h +(m)m(u\377)f(ausgegeb)s(en)g(w)m(erden.)382 1477 y(W)-8 +b(endet)25 b(man)f(den)g(Algorithm)m(us)h(auf)f(das)f(Beispiel)h(an,)i +(so)d(w)m(erden)i(folgende)g(P)m(ak)m(ete)382 1590 y(\374b)s(er)30 +b(das)h(Netzw)m(erk)g(v)m(ersendet:)393 2152 y @beginspecial +9 @llx 758 @lly 365 @urx 810 @ury 3560 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//wire_1.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Thu Mar 16 13:00:09 2000 +%%Title: wire_1.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 9 758 365 810 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +newpath +141.733 796.537 m +141.733 765.356 l +340.158 765.356 l +0 0 0 rgb +0.566929 w +0 j +0 J +[] 0 d +S +pusht +340.158 765.356 translate +0 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +/Times-Roman 12 sf +(Pakete auf dem Netzwerk) +12 773 T +(A) +150 774 T +(B) +167 774 T +(C) +184 774 T +(D) +201 774 T +(E) +218 774 T +(F) +243 774 T +(G) +263 774 T +(H) +280 774 T +(Zeit) +342 769 T +[14.1732 0 0 -14.1732 147.402 785.198] rect +1 w +S +[14.1732 0 0 -14.1732 164.41 785.198] rect +S +[14.1732 0 0 -14.1732 181.418 785.198] rect +S +[14.1732 0 0 -14.1732 198.426 785.198] rect +S +[14.1732 0 0 -14.1732 240.945 785.198] rect +S +[5.6693 0 0 -14.1732 232.441 785.198] rect +gsave +0.697 0.697 0.697 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[14.1732 0 0 -14.1732 260.788 785.198] rect +S +[14.1732 0 0 -14.1732 277.796 785.198] rect +S +[14.1732 0 0 -14.1732 215.433 785.198] rect +S +/Times-Roman 12 sf +(Schranke) +167 799 T +newpath +215.433 802.206 m +232.441 802.206 232.441 796.537 235.276 788.033 c +0.283465 w +S +pusht +235.276 788.033 translate +-71.5651 rotate +[ ] 0 d +-6 3 m +1 0 l +-6 -3 l +S +popt +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 382 2386 a(Nun)45 b(k)-5 b(ann)45 b(der)h(Algorithm)m(us)g +(f\374r)f(den)h(Empfang)g(der)g(P)m(ak)m(ete)h(folgenderma\377en)382 +2498 y(v)m(erb)s(essert)30 b(w)m(erden:)493 2761 y(1.)46 +b(Empfange)32 b(ein)e(P)m(ak)m(et.)648 2973 y(\(a\))46 +b(F)-8 b(alls)44 b(das)f(P)m(ak)m(et)i(einen)e(Daten)m(blo)s(c)m(k)i +(en)m(th\344lt,)j(gib)c(den)f(Befehl,)k(den)809 3086 +y(Daten)m(blo)s(c)m(k)42 b(auf)e(die)h(F)-8 b(estplatte)41 +b(zu)g(sc)m(hreib)s(en,)j(und)c(merk)m(e)h(dir)g(den)809 +3199 y(Daten)m(blo)s(c)m(k)32 b(in)e(einer)h(Menge.)643 +3345 y(\(b\))46 b(F)-8 b(alls)43 b(das)f(P)m(ak)m(et)h(eine)g(Sc)m +(hrank)m(e)h(ist,)h(w)m(arte)f(auf)e(den)g(Absc)m(hlu\377)h(der)809 +3458 y(Sc)m(hreib)s(op)s(erationen)30 b(aller)f(Daten)m(bl\366)s(c)m(k) +m(e)g(in)f(der)g(Menge,)h(und)f(leere)g(die)809 3571 +y(Menge)j(ansc)m(hlie\377end.)382 3833 y(Hier)f(no)s(c)m(h)h(ein)g +(Beispiel:)393 4922 y @beginspecial 9 @llx 707 @lly 365 +@urx 820 @ury 3560 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//timing_n_wire_2.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Mon Apr 17 14:17:40 2000 +%%Title: timing_n_wire_2.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 9 707 365 820 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +newpath +141.619 745.45 m +141.619 714.269 l +340.044 714.269 l +0 0 0 rgb +0.566929 w +0 j +0 J +[] 0 d +S +pusht +340.044 714.269 translate +0 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +/Times-Roman 12 sf +(Pakete auf dem Netzwerk) +12 722 T +(A) +149 723 T +(B) +167 723 T +(C) +184 723 T +(D) +201 723 T +(E) +218 723 T +(F) +243 723 T +(G) +269 723 T +(H) +286 723 T +(Zeit) +342 718 T +[14.1732 0 0 -14.1732 147.288 734.111] rect +1 w +S +[14.1732 0 0 -14.1732 164.296 734.111] rect +S +[14.1732 0 0 -14.1732 181.304 734.111] rect +S +[14.1732 0 0 -14.1732 198.312 734.111] rect +S +[14.1732 0 0 -14.1732 240.831 734.111] rect +S +[5.6693 0 0 -14.1732 232.327 734.111] rect +gsave +0.697 0.697 0.697 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[5.6693 0 0 -14.1732 257.953 734.174] rect +gsave +0.697 0.697 0.697 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[14.1732 0 0 -14.1732 266.457 734.174] rect +S +[14.1732 0 0 -14.1732 283.465 734.174] rect +S +[14.1732 0 0 -14.1732 215.319 734.111] rect +S +newpath +141.619 810.647 m +141.619 768.127 l +340.044 768.127 l +0.566929 w +S +pusht +340.044 768.127 translate +0 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +/Times-Roman 12 sf +(Schreiboperation fertig) +25 770 T +(Schreibaufforderung) +36 790 T +newpath +147.382 787.739 m +158.721 787.739 l +1 w +S +newpath +164.39 787.739 m +175.728 787.739 l +S +newpath +181.398 787.739 m +192.736 787.739 l +S +newpath +198.406 787.739 m +209.744 787.739 l +S +newpath +232.421 787.739 m +249.429 787.739 l +S +newpath +266.457 788.033 m +272.126 788.033 l +277.795 788.033 l +S +(A) +148 790 T +(B) +166 790 T +(C) +183 790 T +(D) +182 801 T +(E) +200 790 T +(F) +237 790 T +(G) +267 790 T +(H) +267 802 T +newpath +204.075 784.905 m +204.075 782.07 l +S +newpath +215.414 784.905 m +215.414 782.07 l +S +newpath +240.925 784.905 m +240.925 782.07 l +S +newpath +263.603 784.905 m +263.603 782.07 l +S +newpath +269.272 784.905 m +269.272 782.07 l +S +newpath +284.942 784.905 m +284.942 782.07 l +S +newpath +296.281 784.905 m +296.281 782.07 l +S +newpath +307.62 784.905 m +307.62 782.07 l +S +(D) +199 771 T +(A) +211 771 T +(C) +237 771 T +(E) +269 771 T +(F) +256 771 T +(H) +280 771 T +(G) +292 771 T +(B) +303 771 T +newpath +238.091 801.912 m +215.414 813.251 198.406 807.582 195.571 807.582 c +0.283465 w +S +pusht +195.571 807.582 translate +180 rotate +[ ] 0 d +-6 3 m +1 0 l +-6 -3 l +S +popt +newpath +240.925 801.912 m +195.571 838.763 155.886 799.078 155.886 799.078 c +S +pusht +155.886 799.078 translate +-135 rotate +[ ] 0 d +-6 3 m +1 0 l +-6 -3 l +S +popt +(Zeit) +342 772 T +newpath +266.457 799.371 m +257.953 805.041 252.284 802.206 246.615 799.371 c +S +pusht +246.615 799.371 translate +-153.431 rotate +[ ] 0 d +-6 3 m +1 0 l +-6 -3 l +S +popt +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 1831 5622 a(25)p eop +%%Page: 26 28 +26 27 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)641 +b(3.4.)71 b(SYNCHR)m(ONISA)-8 b(TION)p 382 299 2989 4 +v 382 539 a Fj(3.4)130 b(Sync)l(hronisation)382 786 y +Fp(Neb)s(en)20 b(der)h(Replik)-5 b(ation)21 b(der)f(Daten)m(bl\366)s(c) +m(k)m(e,)25 b(die)20 b(Bestandteil)i(der)e(normalen)i(Sc)m(hreib-)382 +899 y(op)s(erationen)36 b(ist,)f(m)m(u\377)g(es)f(auc)m(h)i(die)f +(M\366glic)m(hk)m(eit)h(geb)s(en,)g(den)e(Inhalt)h(der)g(gespie-)382 +1012 y(gelten)c(F)-8 b(estplatten)32 b(wieder)f(in)g(den)g(aktuellen)g +(Zustand)g(zu)g(bringen,)h(w)m(enn)f(w)m(egen)382 1125 +y(des)23 b(Ausfalls)g(einer)i(K)m(omp)s(onen)m(te)h(die)e(F)-8 +b(estplatten)25 b(nic)m(h)m(t)g(mehr)g(die)f(gleic)m(hen)h(Daten)382 +1238 y(en)m(thalten.)382 1395 y(Die)e(o\033ensic)m(h)m(tlic)m(he)k +(L\366sung)d(f\374r)f(das)g(Problem)i(ist)e(es,)i(alle)e(Bl\366)s(c)m +(k)m(e)h(einer)g(der)g(b)s(eiden)382 1508 y(F)-8 b(estplatten)38 +b(auf)e(die)h(andere)h(zu)e(k)m(opieren.)61 b(Diese)36 +b(V)-8 b(organgsw)m(eise)38 b(ist)f(allerdings)382 1621 +y(f\374r)23 b(viele)g(An)m(w)m(endungsf\344lle)j(nic)m(h)m(t)f +(geeignet.)39 b(Bei)23 b(gro\377en)i(P)m(artitionen)g(z.B.)f(\(T)-8 +b(erra-)382 1734 y(b)m(yte\))26 b(w\374rde)g(der)g(K)m(opierv)m(orang)i +(sehr)e(lange)g(dauern,)h(b)s(ei)f(geographisc)m(h)h(v)m(erteilten)382 +1847 y(Knoten)38 b(k)-5 b(ann)37 b(die)g(Not)m(w)m(endigk)m(eit,)k +(derart)d(viele)f(Daten)g(zu)g(transp)s(ortieren,)j(mit)382 +1960 y(hohen)31 b(K)m(osten)g(v)m(erbunden)h(sein.)382 +2245 y Fo(3.4.1)112 b(Sc)m(hnelle)37 b(Sync)m(hronisation)382 +2461 y Fp(Daher)27 b(ist)g(in)g(DRBD)g(no)s(c)m(h)g(zus\344tzlic)m(h)i +(ein)e(v)m(erb)s(essertes)g(Sync)m(hronisationsv)m(erfah-)382 +2574 y(ren)d(v)m(orhanden.)40 b(Dab)s(ei)24 b(w)m(erden)i(n)m(ur)f +(jene)f(Bl\366)s(c)m(k)m(e)h(k)m(opiert,)h(die)f(v)m(er\344ndert)g +(wurden,)382 2687 y(w)m(\344hrend)31 b(die)e(V)-8 b(erbindung)31 +b(zum)e(Knoten)h(mit)g(der)f(gespiegelten)i(F)-8 b(estplatte)30 +b(un)m(ter-)382 2800 y(bro)s(c)m(hen)h(w)m(ar.)382 2957 +y(Daf\374r)j(ist)g(es)f(not)m(w)m(endig,)38 b(genau)d(zu)f(wissen,)h(w) +m(elc)m(he)h(Daten)m(bl\366)s(c)m(k)m(e)g(v)m(om)f(empfan-)382 +3070 y(genden)k(Knoten)g(ordn)m(ungsgem\344\377)h(auf)e(die)g(F)-8 +b(estplatte)39 b(gesc)m(hrieb)s(en)h(wurden.)64 b(In)382 +3183 y(den)31 b(Protok)m(ollen)h(A)e(und)h(B)f(ist)g(ab)s(er)h(eine)g +(solc)m(he)g(Benac)m(hric)m(h)m(tigung)k(nic)m(h)m(t)d(v)m(orge-)382 +3296 y(sehen.)40 b(Daher)27 b(wird)h(ein)f(w)m(eiteres)h(P)m(ak)m(et)g +(in)f(das)g(Protok)m(oll)i(aufgenommen.)41 b(Dieses)382 +3409 y(P)m(ak)m(et)g(wird)e(v)m(om)h(sekund\344ren)g(Knoten)h(an)e(den) +h(prim\344ren)g(gesendet,)j(w)m(enn)d(alle)382 3522 y(Daten)m(bl\366)s +(c)m(k)m(e)c(einer)f(der)f(in)g(Absc)m(hnitt)h(3.3.1.1)g +(eingef\374hrten)g(Menge)f(gesc)m(hrieb)s(en)382 3635 +y(wurden.)41 b(Dieses)30 b(Best\344tigungspak)m(et)i(ist)f(in)f(allen)h +(drei)g(Protok)m(ollen)h(v)m(orhanden.)382 3792 y(Bric)m(h)m(t)j(n)m +(un)f(die)f(V)-8 b(erbindung)35 b(zwisc)m(hen)f(zw)m(ei)g(Knoten)h +(zusammen,)f(wird)g(am)f(sen-)382 3905 y(denden)e(Knoten)f(angenommen,) +i(da\377)e(alle)h(P)m(ak)m(ete,)g(die)f(in)g(no)s(c)m(h)g(nic)m(h)m(t)i +(b)s(est\344tigten)382 4018 y(Mengen)37 b(en)m(thalten)i(sind,)f(no)s +(c)m(h)g(nic)m(h)m(t)g(gesc)m(hrieb)s(en)g(wurden.)61 +b(Diese)37 b(Bl\366)s(c)m(k)m(e)g(und)382 4131 y(alle)29 +b(Bl\366)s(c)m(k)m(e,)h(die,)g(w)m(\344hrend)h(die)e(V)-8 +b(erbindung)31 b(un)m(terbro)s(c)m(hen)g(ist,)e(gesc)m(hrieb)s(en)h(w)m +(er-)382 4244 y(den,)h(w)m(erden)h(in)e(einem)h(Bitfeld)g(markiert.)382 +4401 y(In)f(diesem)h(Bitfeld)g(en)m(tspric)m(h)m(t)i(jedes)d(Bit)h +(einer)g(b)s(estimm)m(ten)h(Datenmenge,)g(die)f(in)382 +4514 y(k)m(einer)g(\034xen)g(Bezieh)m(ung)h(zur)e(Blo)s(c)m +(kgr\366\377e)i(auf)e(dem)h(Ger\344t)f(steh)m(t.)382 +4672 y(W)-8 b(enn)39 b(die)f(K)m(omm)m(unik)-5 b(ation)41 +b(wieder)e(hergestellt)h(ist,)g(l\344uft)e(die)g(Sync)m(hronisation)382 +4785 y(parallel)g(zum)g(normalen)g(Betrieb.)61 b(Die)38 +b(Bandbreite,)i(die)d(der)h(Sync)m(hronisations-)382 +4898 y(proze\377)31 b(maximal)g(b)s(elegen)g(darf,)g(m)m(u\377)g(v)m +(om)g(An)m(w)m(ender)h(k)m(on\034guriert)g(w)m(erden.)382 +5055 y(Die)d(Daten)m(bl\366)s(c)m(k)m(e,)i(die)e(im)g(Zuge)h(der)f +(Sync)m(hronisation)i(v)m(ersendet)e(w)m(erden,)i(stehen)382 +5168 y(au\377erhalb)22 b(des)e(in)g(Absc)m(hnitt)i(3.3.1.1)f(b)s(esc)m +(hrieb)s(enen)g(W)-8 b(rite-Barrier-Mec)m(hanism)m(us.)382 +5281 y(F\374r)47 b(sie)g(wird)h(immer)h(eine)e(Sc)m(hreibb)s +(est\344tigung)j(nac)m(h)f(Protok)m(oll)g(C)e(zur\374c)m(kge-)382 +5394 y(sc)m(hic)m(kt.)61 b(Das)36 b(en)m(tsprec)m(hende)k(Bit)c(im)h +(Bitfeld)h(wird)f(erst)g(dann)g(wieder)h(gel\366sc)m(h)m(t,)1831 +5622 y(26)p eop +%%Page: 27 29 +27 28 bop 382 262 a Fl(KAPITEL)31 b(3.)71 b(DRBD)30 b(DESIGN)641 +b(3.4.)71 b(SYNCHR)m(ONISA)-8 b(TION)p 382 299 2989 4 +v 382 539 a Fp(w)m(enn)37 b(f\374r)f(alle)h(Bl\366)s(c)m(k)m(e,)i(die)d +(v)m(om)h(Bit)f(abgedec)m(kt)i(sind,)g(eine)f(Sc)m(hreibb)s +(est\344tigung)382 652 y(v)m(orliegt.)h(Das)21 b(erm\366glic)m(h)m(t)i +(die)e(F)-8 b(ortsetzung)23 b(eines)e(sc)m(hnellen)h(Sync)m +(hronisationsv)m(or-)382 764 y(ganges)k(nac)m(h)i(einer)e(erneuten)i +(Un)m(terbrec)m(h)m(ung)h(des)d(K)m(omm)m(unik)-5 b(ationsk)g(anals,)30 +b(ohne)382 877 y(da\377)h(eine)f(Un)m(v)m(ollst\344ndigk)m(eit)j(der)e +(Sync)m(hronisation)h(b)s(ef\374rc)m(h)m(tet)g(w)m(erden)g(m)m(u\377.) +382 1171 y Fo(3.4.2)112 b(Datensic)m(herheit)382 1392 +y Fp(V)-8 b(or)36 b(der)h(Sync)m(hronisation)h(en)m(th\344lt)f(die)g +(gespiegelte)g(F)-8 b(estplatte)37 b(einen)g(v)m(eralteten)382 +1505 y(ab)s(er)23 b(k)m(onsisten)m(ten)i(Datenstand,)h(w)m(\344rend)e +(der)g(Sync)m(hronisation)h(ist)e(ihr)h(Filesystem)382 +1618 y(in)k(k)m(einem)h(k)m(onsisten)m(ten)h(Zustand.)41 +b(F\344llt)28 b(n)m(un)h(w)m(\344hrend)h(der)f(Sync)m(hronisation)h +(die)382 1731 y(F)-8 b(estplatte)36 b(des)f(Knotens)g(mit)g(dem)h +(aktuellen)f(Datenstand)h(aus,)g(k)-5 b(ann)35 b(n)m(ur)h(mehr)382 +1844 y(ein)j(Bac)m(kup)g(helfen,)i(denn)e(der)f(Zustand)h(auf)g(der)f +(gespiegelten)i(F)-8 b(estplatte,)42 b(eine)382 1957 +y(Misc)m(h)m(ung)30 b(aus)f(dem)h(v)m(eralteten)h(Zustand)f(und)f(dem)h +(aktuellen)g(Zustand,)g(ist)f(nic)m(h)m(t)382 2069 y(brauc)m(h)m(bar.) +382 2232 y(W\344hrend)36 b(der)f(Sync)m(hronisation)h(bietet)g(ein)f +(Cluster)g(aus)g(zw)m(ei)h(Knoten)g(k)m(eine)f(Si-)382 +2345 y(c)m(herheit.)382 2508 y(Dieses)30 b(Problem)j(k)m(\366nn)m(te)f +(durc)m(h)g(den)f(Einsatz)h(eines)f(Log-Structured-Filesystems)382 +2621 y(gel\366st)k(w)m(erden.)57 b(Es)35 b(m)m(\374\377ten)h(der)g +(Sync)m(hronisationsmec)m(hanism)m(us)j(und)c(das)g(File-)382 +2734 y(system)30 b(eng)g(zusammenarb)s(eiten)j(und)d(z.B.)h(die)f(Sync) +m(hronisation)j(als)d(eine)h(einzige)382 2847 y(T)-8 +b(ransaktion)32 b(auf)e(dem)h(empfangenden)h(Knoten)f(durc)m +(hf\374hren.)1831 5622 y(27)p eop +%%Page: 28 30 +28 29 bop 382 1211 a Fk(Kapitel)62 b(4)382 1676 y Fm(Lin)-6 +b(ux)382 2171 y Fp(Dieses)31 b(Kapitel)i(gibt)g(einen)f(kleinen)h +(\334b)s(erblic)m(k)f(\374b)s(er)g(Ger\344tetreib)s(er)h(un)m(ter)g +(Lin)m(ux)382 2284 y(und)i(bildet)g(die)f(Grundlage)i(f\374r)e(die)h(w) +m(eiterf\374hrenden)i(Kapitel.)53 b(Die)35 b(Informatio-)382 +2397 y(nen)26 b(in)g(diesem)g(Kapitel)h(wurden)f(haupts\344c)m(hlic)m +(h)j(dem)d(Quellco)s(de)h(des)e(Kernels)i(en)m(t-)382 +2510 y(nommen.)39 b(Die)23 b(meisten)g(B\374c)m(her)h([Rus98][BBDK97)q +(][Rub98)q(])f(und)g(Artik)m(el)g([Rub97)q(])382 2622 +y(\374b)s(er)i(den)g(Lin)m(ux-Kernel)j(geb)s(en)d(zw)m(ar)h(einen)g +(guten)f(\334b)s(erblic)m(k)h(\374b)s(er)f(den)g(gesam)m(ten)382 +2735 y(Kernel,)31 b(jedo)s(c)m(h)g(k)m(eine)g(Details)g(\374b)s(er)f +(den)h(Bu\033er-Cac)m(he.)382 3072 y Fj(4.1)130 b(GPL)382 +3324 y Fp(Die)34 b(au\033allendste)g(Eigensc)m(haft)i(des)d(jetzt)h(so) +f(p)s(opul\344ren)i(Betriebssystems)e(Lin)m(ux)382 3437 +y(ist)k(seine)g(Lizenz,)j(die)d(Gn)m(u)h(General)f(Public)i(License.)61 +b(Diese)37 b(Lizenz)h(erm\366glic)m(h)m(t)382 3550 y(einerseits)44 +b(die)g(rasend)h(sc)m(hnelle)f(V)-8 b(erbreitung)46 b(des)e(Systems,)j +(sic)m(hert)e(ab)s(er)e(auc)m(h)382 3663 y(dessen)30 +b(W)-8 b(eiteren)m(t)m(wic)m(klung.)382 3826 y(Die)34 +b(Lizenz)g(r\344um)m(t)h(dem)f(An)m(w)m(ender)i(das)d(Rec)m(h)m(t)i +(ein,)g(die)f(b)s(etro\033ene)g(Soft)m(w)m(are)h(zu)382 +3939 y(mo)s(di\034zieren.)56 b(Wird)35 b(Soft)m(w)m(are,)j(die)e(un)m +(ter)g(den)f(Bestimm)m(ungen)j(der)d(GPL)h(steh)m(t,)382 +4052 y(als)28 b(T)-8 b(eil)28 b(eines)g(gr\366\377eren)h(Pro)s(duktes)g +(o)s(der)e(als)h(eigenst\344ndiges)h(Pro)s(dukt)f(in)g(bin\344rer)382 +4164 y(F)-8 b(orm)39 b(w)m(eitergegeb)s(en,)j(m)m(u\377)c(dem)h +(Empf\344nger)g(der)f(Soft)m(w)m(are)h(der)f(Quellco)s(de)h(zu-)382 +4277 y(g\344nglic)m(h)32 b(gemac)m(h)m(t)h(w)m(erden.)42 +b(Es)31 b(m)m(u\377)g(auc)m(h)h(der)e(Quellco)s(de)i(aller)f(V)-8 +b(er\344nderungen,)382 4390 y(die)33 b(ev)m(en)m(tuell)h(an)f(dem)g +(Pro)s(dukt)g(v)m(orgenommen)i(wurden,)f(an)f(den)g(Ben)m(utzer)h(w)m +(ei-)382 4503 y(tergegeb)s(en)d(w)m(erden.)382 4839 y +Fj(4.2)130 b(Ger\344tetreib)t(er)382 5092 y Fp(Zu)39 +b(den)h(grundlegenden)h(Aufgab)s(en)e(eines)g(Betriebssystems)g +(geh\366rt)h(es,)h(Zugri\033e)382 5205 y(auf)26 b(die)h(v)m +(erf\374gbare)g(Hardw)m(are)h(in)f(geregelten)h(Bahnen)f(zu)f(erlaub)s +(en.)40 b(Lin)m(ux)28 b(bietet)382 5318 y(hier)40 b(grunds\344tzlic)m +(h)h(die)e(M\366glic)m(hk)m(eit)i(f\374r)f(zeic)m(henorien)m(tierte)j +(Ger\344te)c(\(c)m(haracter)1831 5622 y(28)p eop +%%Page: 29 31 +29 30 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)1095 +b(4.2.)71 b(GER\304)-8 b(TETREIBER)p 382 301 2989 4 v +382 539 a Fp(devices\),)31 b(blo)s(c)m(k)m(orien)m(tierte)j(Ger\344te)e +(\(blo)s(c)m(k)f(devices\))g(und)h(Netzw)m(erkk)-5 b(arten)m(treib)s +(er)382 652 y(\(net)m(w)m(ork)32 b(driv)m(ers\).)382 +813 y(Im)41 b(Filesystem)g(sind)g(die)g(Ger\344te)g(durc)m(h)i(sp)s +(ezielle)e(Ein)m(tr\344ge)i(f\374r)e(An)m(w)m(enderpro-)382 +926 y(gramme)d(sic)m(h)m(tbar.)60 b(Diese)37 b(Ein)m(tr\344ge)h(\(sp)s +(ecial)f(\034les\))f(tragen)i(zw)m(ei)f(Nummern,)i(die)382 +1038 y(f\374r)31 b(den)g(Kernel)h(Bedeutung)g(hab)s(en.)43 +b(Die)31 b(erste)g(Nummer)h(iden)m(ti\034ziert)h(den)f(ange-)382 +1151 y(spro)s(c)m(henen)d(T)-8 b(reib)s(er,)30 b(die)e(zw)m(eite)i(das) +e(angespro)s(c)m(hene)i(Ger\344t)e(des)g(T)-8 b(reib)s(ers.)40 +b(So)29 b(ist)382 1264 y(das)35 b(Ger\344t)h(/dev/hda4,)i(die)e(vierte) +g(P)m(artition)h(des)f(ersten)f(IDE-Ger\344tes,)j(f\374r)d(den)382 +1377 y(Kernel)c(durc)m(h)h(das)e(T)-8 b(up)s(el)31 b(\(3,4\))g(iden)m +(ti\034ziert.)382 1538 y(Die)h(erste)g(der)g(b)s(eiden)h(Nummern)f +(\(ma)5 b(jor)33 b(n)m(um)m(b)s(er\))g(wird)g(innerhalb)g(des)f +(Kernels)382 1651 y(v)m(erw)m(endet,)k(um)e(die)f(Einsprungspunkte)i +(des)f(T)-8 b(reib)s(ers)34 b(in)f(einem)h(statisc)m(hen)h(F)-8 +b(eld)382 1764 y(zu)30 b(\034nden.)382 1925 y(Ob)m(w)m(ohl)c(der)e +(Kernel)h(nic)m(h)m(t)h(in)e(einer)g(ob)5 b(jektorien)m(tierten)27 +b(Programmiersprac)m(he)g(im-)382 2038 y(plemen)m(tiert)34 +b(ist,)f(k)-5 b(ann)32 b(man)h(das)f(Design)h(der)f(T)-8 +b(reib)s(er)33 b(ob)5 b(jektorien)m(tiert)35 b(b)s(esc)m(hrei-)382 +2151 y(b)s(en:)633 2336 y(Das)29 b(VFS)989 2303 y Fg(1)1029 +2336 y Fp(-In)m(terface)h(ist)g(die)g(abstrakte)g(Basisklasse)f(aller)h +(T)-8 b(reib)s(er.)41 b(Da)m(v)m(on)633 2449 y(abgeleitet)26 +b(sind)f(die)g(Sprungtab)s(ellen)i(der)f(einzelnen)g(T)-8 +b(reib)s(er,)27 b(da)e(sie)g(die)g(ab-)633 2562 y(strakten)30 +b(F)-8 b(unktionen)32 b(des)e(In)m(terfaces)g(mit)h(reellen)g +(Prozeduren)h(f\374llen.)40 b(Bei)633 2675 y(der)f(Initialisierung)h +(eines)f(T)-8 b(reib)s(ers)40 b(suc)m(h)m(t)g(dieser)f(nac)m(h)h(der)g +(v)m(orhandenen)633 2788 y(Hardw)m(are)f(und)g(erzeugt)g(f\374r)f(jede) +h(gefundene)g(Instanz)f(der)h(Hardw)m(are)g(ein)633 2901 +y(Ob)5 b(jekt)30 b(des)g(T)-8 b(reib)s(ers.)382 3192 +y Fo(4.2.1)112 b(Zeic)m(henorien)m(tierte)35 b(T)-9 b(reib)s(er)382 +3412 y Fp(Das)30 b(VFS-In)m(terface,)h(ist)f(in)h(include/lin)m +(ux/fs.h)h(folgenderma\377en)g(de\034niert:)609 3668 +y Fc(struct)47 b(file_operations)g({)844 3781 y(loff_t)g(\(*llseek\))g +(\(struct)f(file)h(*,)g(loff_t,)g(int\);)844 3893 y(ssize_t)g +(\(*read\))g(\(struct)g(file)f(*,)h(char)g(*,)g(size_t,)g(loff_t)g +(*\);)844 4006 y(ssize_t)g(\(*write\))g(\(struct)f(file)h(*,)g(const)g +(char)g(*,)g(size_t,)1690 4119 y(loff_t)f(*\);)844 4232 +y(int)h(\(*readdir\))g(\(struct)g(file)f(*,)h(void)g(*,)g(filldir_t\);) +844 4345 y(unsigned)g(int)g(\(*poll\))g(\(struct)f(file)h(*,)1878 +4458 y(struct)f(poll_table_struct)h(*\);)844 4571 y(int)g(\(*ioctl\))g +(\(struct)g(inode)f(*,)h(struct)g(file)g(*,)1502 4684 +y(unsigned)g(int,)f(unsigned)h(long\);)844 4797 y(int)g(\(*mmap\))g +(\(struct)g(file)f(*,)h(struct)g(vm_area_struct)g(*\);)844 +4910 y(int)g(\(*open\))g(\(struct)g(inode)f(*,)h(struct)g(file)g(*\);) +844 5023 y(int)g(\(*flush\))g(\(struct)g(file)f(*\);)844 +5135 y(int)h(\(*release\))g(\(struct)g(inode)f(*,)h(struct)g(file)g +(*\);)844 5248 y(int)g(\(*fsync\))g(\(struct)g(file)f(*,)h(struct)g +(dentry)g(*\);)p 382 5308 1196 4 v 486 5362 a Ff(1)520 +5394 y Fe(Virtual)26 b(Filesystem)f(Switc)n(h)1831 5622 +y Fp(29)p eop +%%Page: 30 32 +30 31 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)1095 +b(4.2.)71 b(GER\304)-8 b(TETREIBER)p 382 301 2989 4 v +844 539 a Fc(int)47 b(\(*fasync\))g(\(int,)g(struct)f(file)h(*,)g +(int\);)844 652 y(int)g(\(*check_media_change\))f(\(kdev_t)h(dev\);)844 +764 y(int)g(\(*revalidate\))g(\(kdev_t)f(dev\);)844 877 +y(int)h(\(*lock\))g(\(struct)g(file)f(*,)h(int,)g(struct)g(file_lock)g +(*\);)609 990 y(};)382 1253 y Fp(Zeic)m(henorien)m(tierte)39 +b(T)-8 b(reib)s(er)35 b(k)m(\366nnen)h(op)s(en\(\),)g(release\(\),)h +(read\(\),)g(write\(\),)g(io)s(ctl\(\),)382 1365 y(p)s(oll\(\),)31 +b(llseek\(\),)f(mmap\(\))i(und)e(fasync\(\))h(implemen)m(tieren.)382 +1628 y Fn(op)s(en\(\))46 b Fp(Wird)21 b(aufgerufen,)j(w)m(enn)e(ein)g +(Programm)h(op)s(en\(2\))f(mit)f(dem)h(en)m(tsprec)m(hen-)609 +1741 y(den)38 b(Ger\344teein)m(trag)h(im)f(Filesystem)f(aufruft.)61 +b(V)-8 b(om)38 b(Kernel)g(wird)g(automa-)609 1854 y(tisc)m(h)c(eine)h +(Instanz)e(v)m(om)h(T)m(yp)g(\034le)g(angelegt)h(und)f(mit)g(op)s +(en\(\))g(dem)g(T)-8 b(reib)s(er)609 1967 y(\374b)s(ergeb)s(en.)47 +b(W)-8 b(enn)33 b(der)f(T)-8 b(reib)s(er)34 b(ein)e(Ger\344t,)h(das)g +(v)m(on)f(mehreren)i(Prozessen)609 2079 y(gleic)m(hzeitig)d +(ge\366\033net)d(w)m(erden)i(k)-5 b(ann,)29 b(v)m(erw)m(altet,)i(so)c +(hat)i(er)f(die)h(M\366glic)m(hk)m(eit,)609 2192 y(in)f(\034le->priv)-5 +b(ate_data)30 b(einen)e(Zeiger)g(auf)f(den)h(eigenen)h(K)m(on)m(text)g +(abzulegen,)609 2305 y(der)39 b(genau)g(dem)g(momen)m(tanen)i +(Proze\377)f(und)f(dem)g(angespro)s(c)m(henen)h(Ger\344t)609 +2418 y(zugeh\366rig)28 b(ist.)39 b(Handelt)27 b(es)g(sic)m(h)g(um)f +(ein)h(Ger\344t,)h(das)f(v)m(on)g(n)m(ur)g(einem)g(Proze\377)609 +2531 y(angesteuert)41 b(w)m(erden)h(k)-5 b(ann,)42 b(so)e(k)-5 +b(ann)39 b(op)s(en\(\))i(mit)f(einem)h(en)m(tsprec)m(henden)609 +2644 y(errno-Co)s(de)32 b(b)s(eendet)f(w)m(erden.)382 +2832 y Fn(release\(\))47 b Fp(En)m(tspric)m(h)m(t)31 +b(dem)e(close\(2\))f(im)g(K)m(on)m(text)i(eines)e(An)m(w)m +(enderprogrammes.)382 3019 y Fn(read\(\))46 b Fp(K)m(opiert)32 +b(Daten)f(v)m(om)g(Ger\344t)g(in)f(den)h(A)m(dre\377raum)h(des)e +(Prozesses.)382 3207 y Fn(write\(\))46 b Fp(Sendet)32 +b(Daten)f(v)m(om)f(A)m(dre\377raum)i(des)f(Prozesses)f(zum)h(Ger\344t.) +382 3395 y Fn(mmap\(\))45 b Fp(Mit)29 b(dieser)g(F)-8 +b(unktion)29 b(k)-5 b(ann)29 b(der)g(Proze\377)h(eine)f(Repr\344sen)m +(tation)h(des)e(Ge-)609 3507 y(r\344tes)36 b(in)g(seinen)g(A)m +(dre\377raum)i(ein)m(blenden.)59 b(Dies)35 b(wird)i(z.B.)f(b)s(ei)f +(den)i(neuen)609 3620 y(Graphiktreib)s(ern)32 b(v)m(on)f(Lin)m(ux)g +(2.2.x)f(gen)m(utzt,)i(um)f(dem)g(Proze\377)g(den)g(F)-8 +b(rame-)609 3733 y(bu\033er)38 b(direkt)h(zug\344nglic)m(h)g(zu)f(mac)m +(hen.)65 b(Dab)s(ei)38 b(k)-5 b(ann)38 b(allerdings)h(\374b)s(er)f(das) +609 3846 y(ph)m(ysisc)m(he)23 b(F)-8 b(ormat)24 b(der)e(graphisc)m(hen) +i(Daten)f(nic)m(h)m(t)h(abstrahiert)g(w)m(erden.)39 b(Das)609 +3959 y(VM-Subsystem)46 b(des)h(Kernels)f(bietet)i(f\374r)e(die)g +(Implemen)m(tierung)j(den)e(re-)609 4072 y(map_page_range\(\))34 +b(Aufruf.)609 4185 y(Die)26 b(neuen)h(Soundtreib)s(er)h(hingegen)f +(bieten)g(\374b)s(er)f(mmap\(\))h(die)g(M\366glic)m(hk)m(eit,)609 +4298 y(einen)h(Pu\033er)g(mit)f(dem)h(Proze\377)g(zu)f(teilen,)i(so)s +(da\377)e(das)g(aufw)m(endige)i(K)m(opieren)609 4411 +y(der)i(Daten)g(b)s(ei)f(read\(\))h(o)s(der)g(write\(\))g(en)m(tfallen) +h(k)-5 b(ann.)609 4524 y(Um)39 b(ph)m(ysisc)m(hen)h(Sp)s(eic)m(her)h +(in)e(den)h(A)m(dre\377raum)h(des)e(Prozesses)g(einzublen-)609 +4637 y(den,)e(gibt)e(es)g(leider)h(k)m(eine)g(ma\377gesc)m(hneiderte)h +(F)-8 b(unktion.)56 b(Es)35 b(ist)g(en)m(t)m(w)m(eder)609 +4749 y(m\366glic)m(h,)k(mit)d(Hilfe)f(der)i(VM-Primitiv)m(e)g(die)f(en) +m(tsprec)m(henden)i(P)m(age-T)-8 b(able-)609 4862 y(Ein)m(tr\344ge)41 +b(selbst)e(zu)g(erzeugen,)j(o)s(der)d(ein)g(eigenes)g(VM)g(Ob)5 +b(jekt)38 b(mit)i(einem)609 4975 y(eigenen)32 b(vm_ops->nopage\(\))g +(Handler)f(zu)g(erzeugen.)382 5163 y Fn(p)s(oll\(\))45 +b Fp(Mu\377)29 b(implemen)m(tiert)j(w)m(erden,)f(um)e(Aufrufe)g(v)m(on) +g(p)s(oll\(2\))g(und)h(select\(2\))f(zu)609 5276 y(erm\366glic)m(hen.) +43 b(Diese)30 b(Prozedur)i(m)m(u\377)g(folgende)f(Seman)m(tik)g(hab)s +(en:)1831 5622 y(30)p eop +%%Page: 31 33 +31 32 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)1095 +b(4.2.)71 b(GER\304)-8 b(TETREIBER)p 382 301 2989 4 v +609 539 a Fp(Daten)31 b(v)m(orhanden)359 b(Gibt)25 b(die)h +(zutre\033enden)g(Ereignisse)g(im)f(R\374c)m(kga-)1648 +652 y(b)s(ew)m(ert)32 b(zur\374c)m(k.)609 798 y(k)m(eine)f(Daten)g(v)m +(orhanden)128 b(L\344\377t)42 b(den)f(Proze\377)h(mit)f(p)s(oll_w)m +(ait\(\))i(sc)m(hlafen,)1648 911 y(bis)g(Daten)g(v)m(orhanden)i(sind,)h +(und)d(gibt)g(0)g(zu-)1648 1023 y(r\374c)m(k.)382 1236 +y Fn(io)s(ctl\(\))j Fp(Mit)26 b(Hilfe)f(dieser)h(F)-8 +b(unktion)27 b(k)m(\366nnen)g(Metadaten)g(zwisc)m(hen)g(einem)f +(Proze\377)609 1349 y(und)c(dem)g(Ger\344tetreib)s(er)h(ausgetausc)m(h) +m(t)h(w)m(erden.)39 b(W\344hrend)23 b(z.B.)e(ein)h(T)-8 +b(reib)s(er)609 1462 y(f\374r)32 b(die)g(serielle)h(Sc)m(hnittstelle)g +(mit)g(read\(2\))g(und)f(write\(2\))h(den)f(Datenstrom)609 +1575 y(zug\344nglic)m(h)44 b(mac)m(h)m(t,)j(k)-5 b(ann)42 +b(der)h(Proze\377)g(\374b)s(er)f(den)g(io)s(ctl\(2\))h(Systemruf)f(die) +609 1688 y(Baudrate,)32 b(die)e(Anzahl)h(der)g(Daten)m(bits,)h(etc.)40 +b(einstellen.)382 1950 y(Mit)29 b(Hilfe)f(dieses)h(In)m(terfaces)g(k)m +(\366nnen)h(T)-8 b(reib)s(er)29 b(f\374r)g(zeic)m(henorien)m(tiere)j +(Ger\344te)e(k)m(om-)382 2063 y(plett)36 b(gek)-5 b(apselt)35 +b(w)m(erden.)56 b(Es)35 b(ist)f(daher)i(auc)m(h)g(mit)g(geringem)g +(Aufw)m(and)g(m\366glic)m(h,)382 2176 y(sie)d(zu)h(mo)s(dularisieren.) +52 b(Diese)34 b(Mo)s(dule)g(k)m(\366nnen)h(zur)f(Laufzeit)g(des)g +(Kernels)g(nac)m(h)382 2289 y(Belieb)s(en)d(nac)m(hgeladen)i(und)d(en)m +(tfern)m(t)i(w)m(erden.)382 2582 y Fo(4.2.2)112 b(Blo)s(c)m(k)m(orien)m +(tierte)34 b(Ger\344te)382 2803 y Fp(Das)i(VFS-In)m(terface)i(wird)f +(nic)m(h)m(t)h(n)m(ur)f(f\374r)g(zeic)m(henorien)m(tierte)j(Ger\344te)d +(v)m(erw)m(endet,)382 2916 y(sondern)h(auc)m(h)h(f\374r)f(blo)s(c)m(k)m +(orien)m(tierte)j(Ger\344te)d(und)h(alle)f(anderen)h(Ob)5 +b(jekte,)40 b(die)e(in)382 3029 y(einem)44 b(Filesystem)f(abgelegt)h(w) +m(erden)g(k)m(\366nnen)g(\(FIF)m(Os,)j(Unix-Domain-So)s(c)m(k)m(ets,) +382 3142 y(Files\).)57 b(Es)35 b(w)m(\344re)i(theoretisc)m(h)h +(m\366glic)m(h,)h(ein)d(blo)s(c)m(k)m(orien)m(tiertes)i(Ger\344t)e +(aufbauend)382 3255 y(auf)e(das)h(VFS-In)m(terface)h(zu)f(implemen)m +(tieren)i(und)f(dab)s(ei)f(die)g(read\(\))g(und)g(write\(\))382 +3368 y(F)-8 b(unktionen)48 b(zu)f(implemen)m(tieren.)92 +b(Dieses)46 b(Ger\344t)h(w)m(\344re)h(allerdings)f(f\374r)g(Filesy-)382 +3481 y(steme)d(un)m(brauc)m(h)m(bar,)50 b(da)43 b(diese)h(den)g +(Bu\033er-Cac)m(he)h(ansprec)m(hen)g(und)f(nic)m(h)m(t)h(das)382 +3594 y(VFS-In)m(terface)35 b(des)g(Ger\344tes)g(v)m(erw)m(enden.)55 +b(Die)34 b(k)m(orrekte)i(V)-8 b(organgsw)m(eise)36 b(b)s(esteh)m(t)382 +3707 y(darin,)e(b)s(ei)f(read\(\))h(und)f(write\(\))h(die)f(generisc)m +(hen)i(F)-8 b(unktionen)35 b(blo)s(c)m(k_read\(\))f(und)382 +3820 y(blo)s(c)m(k_write\(\))27 b(anzugeb)s(en.)40 b(Diese)25 +b(F)-8 b(unktionen)26 b(\374b)s(ertragen)g(die)g(Daten)f(v)m(om)h(bzw.) +382 3932 y(in)k(den)h(Bu\033er-Cac)m(he.)382 4222 y Fn(4.2.2.1)103 +b(Bu\033er-Cac)m(he)382 4444 y Fp(Es)40 b(gibt)g(eine)h(ganze)f(Reihe)g +(v)m(on)g(Cac)m(hes)h(un)m(ter)g(Lin)m(ux,)j(do)s(c)m(h)c(der)h +(Bu\033er-Cac)m(he)382 4557 y(ist)27 b(mit)h(blo)s(c)m(k)m(orien)m +(tierten)j(Ger\344ten)d(un)m(w)m(eigerlic)m(h)j(v)m(erbunden.)41 +b(Der)28 b(Bu\033er-Cac)m(he)382 4670 y(v)m(erw)m(altet)k(Daten)m +(bl\366)s(c)m(k)m(e)h(blo)s(c)m(k)m(orien)m(tierter)g(Ger\344te)e(w)m +(\344hrend)i(sie)d(im)g(Sp)s(eic)m(her)i(lie-)382 4782 +y(gen.)61 b(Jedem)39 b(dieser)e(Daten)m(bl\366)s(c)m(k)m(e)i(ist)e +(eine)h(Instanz)f(v)m(om)h(T)m(yp)g(bu\033er_head)g(zu-)382 +4895 y(geordnet,)j(die)d(alle)g(Metadaten)h(zu)f(dem)g(Daten)m(blo)s(c) +m(k)h(en)m(th\344lt.)64 b(Die)38 b(wic)m(h)m(tigsten)382 +5008 y(F)-8 b(elder)31 b(v)m(on)g(bu\033er_head:)609 +5271 y Fc(...)609 5384 y(unsigned)47 b(long)g(b_blocknr;)g(/*)g(block)f +(number)h(*/)1831 5622 y Fp(31)p eop +%%Page: 32 34 +32 33 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)1095 +b(4.2.)71 b(GER\304)-8 b(TETREIBER)p 382 301 2989 4 v +609 539 a Fc(unsigned)47 b(long)g(b_size;)188 b(/*)47 +b(block)f(size)h(*/)609 652 y(kdev_t)g(b_dev;)564 b(/*)47 +b(device)f(\(B_FREE)h(=)g(free\))g(*/)609 764 y(unsigned)g(long)g +(b_state;)141 b(/*)47 b(buffer)f(state)h(bitmap)g(\(see)g(above\))g(*/) +609 877 y(unsigned)g(int)g(b_count;)188 b(/*)47 b(users)f(using)h(this) +g(block)g(*/)609 990 y(void)g(\(*b_end_io\)\(struct)g(buffer_head)f +(*bh,)h(int)g(uptodate\);)609 1103 y(void)g(*b_dev_id;)609 +1216 y(...)382 1465 y Fn(b_blo)s(c)m(knr)d Fp(Die)30 +b(P)m(osition)i(des)e(Blo)s(c)m(k)m(es)h(auf)f(dem)h(Ger\344t.)382 +1650 y Fn(b_size)45 b Fp(Die)f(Gr\366\377e)g(des)f(Blo)s(c)m(k)m(es)h +(in)g(Bytes.)80 b(Alle)43 b(Bl\366)s(c)m(k)m(e)h(eines)g(Ger\344tes,)j +(die)609 1763 y(zu)39 b(einem)h(Zeitpunkt)h(im)e(Sp)s(eic)m(her)h +(sind,)i(hab)s(en)d(die)h(gleic)m(he)g(Gr\366\377e.)67 +b(Die)609 1876 y(Blo)s(c)m(kgr\366\377e)39 b(eines)e(Ger\344tes)h(k)-5 +b(ann)38 b(zur)g(Laufzeit)g(ge\344ndert)h(w)m(erden.)63 +b(Dab)s(ei)609 1989 y(w)m(erden)27 b(alle)f(Bl\366)s(c)m(k)m(e)g(mit)g +(der)f(alten)i(Gr\366\377e)e(aus)h(dem)g(Bu\033er-Cac)m(he)h(en)m +(tfern)m(t.)382 2173 y Fn(b_dev)45 b Fp(Das)30 b(Ger\344t,)h(zu)f(dem)h +(dieser)g(Blo)s(c)m(k)f(geh\366rt.)382 2357 y Fn(b_coun)m(t)45 +b Fp(Referenzz\344hler)31 b(dieses)f(Blo)s(c)m(k)m(es.)382 +2542 y Fn(b_state)47 b Fp(Die)30 b(wic)m(h)m(tigsten)j(Zust\344nde)e +(eines)f(Blo)s(c)m(k)m(es:)609 2749 y(dirt)m(y)267 b(Der)26 +b(Blo)s(c)m(k)g(wurde)g(v)m(er\344ndert)i(und)e(m)m(u\377)g(auf)g(das)f +(Ger\344t)h(zur\374c)m(k-)1066 2862 y(gesc)m(hrieb)s(en)32 +b(w)m(erden.)609 3005 y(upto)s(date)104 b(Der)37 b(Blo)s(c)m(k)g(wurde) +g(gelesen)g(o)s(der)f(gesc)m(hrieb)s(en)i(und)f(en)m(tspric)m(h)m(t) +1066 3118 y(somit)31 b(dem)g(Blo)s(c)m(k)f(des)g(Ger\344tes.)609 +3261 y(lo)s(c)m(k)m(ed)212 b(Die)33 b(Daten)m(\374b)s(ertragung)i(v)m +(om)e(o)s(der)f(zum)h(Ger\344t)f(\034ndet)h(derzeit)1066 +3374 y(statt.)382 3582 y Fn(b_end_io)44 b Fp(Diese)g(F)-8 +b(unktion)45 b(wird)f(nac)m(h)h(dem)f(Absc)m(hlu\377)h(einer)f(IO-Op)s +(eration)609 3694 y(aufgerufen.)382 3879 y Fn(b_dev_id)g +Fp(Dieser)31 b(Zeiger)g(wird)g(der)f(b_end_io)i(F)-8 +b(unktion)32 b(\374b)s(ergeb)s(en.)382 4128 y(Die)c(Aufgab)s(e)h(des)f +(Bu\033er-Cac)m(hes)i(ist)e(es,)g(die)h(Zugri\033e)g(auf)g(das)f +(Ger\344t)h(zu)f(optimie-)382 4241 y(ren)22 b(und)g(den)f(darauf)h +(aufsetzenden)h(Dateisystemen)f(eine)g(einfac)m(h)g(zu)g(handhab)s +(ende)382 4354 y(V)-8 b(erw)m(altung)38 b(der)e(Pu\033ersp)s(eic)m(her) +h(zur)f(V)-8 b(erf\374gung)37 b(zu)f(stellen.)57 b(Der)36 +b(Bu\033er-Cac)m(he)382 4467 y(w)m(\344c)m(hst,)25 b(w)m(enn)e(gen)m +(ug)g(freier)f(Sp)s(eic)m(her)h(v)m(orhanden)g(ist)f(und)g(IO-Op)s +(erationen)h(durc)m(h-)382 4580 y(gef\374hrt)33 b(w)m(erden.)47 +b(Wird)32 b(der)g(ph)m(ysisc)m(he)h(Sp)s(eic)m(her)h(knapp,)f(dann)f +(wird)h(der)f(Bu\033er-)382 4693 y(Cac)m(he)37 b(v)m(erkleinert,)h +(indem)e(Bl\366)s(c)m(k)m(e,)i(die)e(w)m(eder)h(v)m(er\344ndert)g +(wurden)f(\(dirt)m(y\))h(no)s(c)m(h)382 4806 y(referenziert)26 +b(sind,)h(v)m(erw)m(orfen)f(w)m(erden.)40 b(Dateisysteme)26 +b(v)m(erw)m(enden)h(un)m(ter)f(anderem)382 4919 y(die)31 +b(folgenden)g(Prozeduren)h(des)e(Bu\033er-Cac)m(hes:)382 +5168 y Fn(getblk\(\))46 b Fp(Liefert)25 b(einen)f(bu\033er_head.)40 +b(W)-8 b(enn)24 b(der)g(Blo)s(c)m(k)g(sc)m(hon)g(im)g(Bu\033er-Cac)m +(he)609 5281 y(w)m(ar,)31 b(wird)g(der)g(Referenzz\344hler)g(erh\366h)m +(t,)g(w)m(enn)h(nic)m(h)m(t,)g(b)s(ek)m(omm)m(t)f(man)g(einen)609 +5394 y(neuen,)g(der)g(auf)f(einen)h(uninitialisierten)i(Blo)s(c)m(k)d +(zeigt.)1831 5622 y(32)p eop +%%Page: 33 35 +33 34 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)1095 +b(4.2.)71 b(GER\304)-8 b(TETREIBER)p 382 301 2989 4 v +382 539 a Fn(brelse\(\))46 b Fp(Gibt)28 b(einen)h(Blo)s(c)m(k)e(frei.) +40 b(F)-8 b(alls)28 b(der)g(Blo)s(c)m(k)g(nic)m(h)m(t)h(mehr)g +(referenziert)g(wird)609 652 y(und)43 b(er)f(v)m(er\344ndert)i(wurde,)i +(wird)d(der)f(Zeitpunkt)h(festgelegt,)j(zu)c(dem)h(der)609 +764 y(Blo)s(c)m(k)31 b(auf)f(das)g(Ger\344t)h(zur\374c)m(kgesc)m(hrieb) +s(en)h(wird.)382 944 y Fn(ll_rw_blo)s(c)m(k\(\))44 b +Fp(F\374hrt)38 b(eine)f(IO-Op)s(eration)h(\(Lesen)g(o)s(der)f(Sc)m +(hreib)s(en\))h(auf)f(den)609 1057 y(angegeb)s(enen)28 +b(Bl\366)s(c)m(k)m(en)f(aus.)39 b(Diese)26 b(F)-8 b(unktion)27 +b(k)m(ehrt)f(v)m(or)h(dem)f(Absc)m(hlu\377)h(der)609 +1170 y(Op)s(eration)32 b(zur\374c)m(k.)382 1350 y Fn(w)m +(ait_on_bu\033er\(\))45 b Fp(W)-8 b(artet)31 b(auf)g(den)f(Absc)m +(hlu\377)i(einer)f(IO-Op)s(eration.)382 1628 y Fn(4.2.2.2)103 +b(Request-Queue)382 1841 y Fp(Die)35 b(Request-Queue)h(ist)f(ein)g(F)-8 +b(eld)36 b(statisc)m(her)g(Gr\366\377e,)h(in)e(das)g(ll_rw_blo)s(c)m +(k\(\))i(die)382 1954 y(IO-Auftr\344ge)28 b(ein)m(tr\344gt.)41 +b(Beim)27 b(Ein)m(tragen)j(w)m(erden)f(die)e(Auftr\344ge)h(so)f +(geordnet,)i(da\377)382 2067 y(die)42 b(Bew)m(egungen)h(des)f(Sc)m +(hreib-/Lesek)m(opfes)h(der)f(F)-8 b(estplatte)43 b(optimiert)g(w)m +(erden.)382 2180 y(Zur)36 b(Zeit)h(wird)f(der)g(sogenann)m(te)i(Elev)-5 +b(ator-Algorithm)m(us)38 b(implemen)m(tiert.)60 b(F)-8 +b(r\374her)382 2293 y(wurden)39 b(Leseop)s(erationen)i(gegen)m(\374b)s +(er)f(Sc)m(hreib)s(op)s(erationen)h(b)s(ev)m(orzugt,)h(do)s(c)m(h)d(es) +382 2406 y(hat)h(sic)m(h)h(herausgestellt,)j(da\377)d(dadurc)m(h)h(die) +e(Gesam)m(tleistung)i(des)e(Systems)g(her-)382 2519 y(abgesetzt)g +(wurde.)67 b(Jetzt)41 b(w)m(erden)f(Sc)m(hreib-)h(und)e(Leseop)s +(erationen)i(mit)f(gleic)m(her)382 2631 y(Priorit\344t)35 +b(b)s(ehandelt,)i(die)d(Sc)m(hreib)s(op)s(erationen)j(d\374rfen)d +(allerdings)h(n)m(ur)g(66)f(\045)g(der)382 2744 y(Request-Queue)g +(ausf\374llen.)52 b(Das)34 b(letzte)h(Drittel)f(k)-5 +b(ann)34 b(n)m(ur)h(v)m(on)g(Leseop)s(erationen)382 2857 +y(b)s(elegt)c(w)m(erden.)382 3012 y(Die)i(Auftr\344ge,)h(die)g(einen)f +(Ger\344tetreib)s(er)i(b)s(etre\033en,)f(w)m(erden)h(durc)m(h)f(Zeiger) +g(zu)f(ei-)382 3125 y(ner)j(Liste)h(v)m(erk)m(ettet,)i(und)d(die)h +(Abarb)s(eitung)g(dieser)f(Liste)h(wird)f(durc)m(h)h(den)g(Auf-)382 +3238 y(ruf)k(der)g(do_request\(\))h(Prozedur)g(des)f(T)-8 +b(reib)s(ers)42 b(gestartet.)73 b(Die)41 b(Zeiger)g(auf)g(die)382 +3351 y(do_request\(\))g(Prozeduren)h(sind)d(in)h(einem)h(globalen)g(F) +-8 b(eld)41 b(abgelegt,)i(die)d(ma)5 b(jor)382 3464 y(n)m(um)m(b)s(er) +32 b(der)f(T)-8 b(reib)s(er)31 b(gibt)g(die)f(P)m(osition)i(im)f(F)-8 +b(eld)31 b(an.)382 3618 y(Do)s(c)m(h)23 b(leider)h(wurden)g(b)s(ei)e +(der)h(Implemen)m(tierung)j(der)d(Request-Queue)h(die)f(K)m(onzep-)382 +3731 y(te)32 b(nic)m(h)m(t)i(so)d(deutlic)m(h)j(getrenn)m(t)g(wie)e(in) +g(anderen)h(Bereic)m(hen)h(des)e(Kernels.)46 b(So)32 +b(gibt)382 3844 y(es)i(eine)h(Unzahl)g(sp)s(ezieller)f(Eigenheiten)j +(in)d(den)h(einzelnen)h(T)-8 b(reib)s(ern,)37 b(die)e(sic)m(h)f(in)382 +3957 y(der)26 b(einen)h(o)s(der)f(anderen)h(F)-8 b(orm)27 +b(im)f(Quellco)s(de)h(der)f(Request-Queue)g(wieder\034nden,)382 +4070 y(die,)j(w\374rde)f(man)g(den)h(Co)s(de)f(der)g(T)-8 +b(reib)s(er)28 b(streng)h(v)m(on)f(den)g(allgemeinen)i(T)-8 +b(eilen)29 b(des)382 4183 y(Kernels)i(trennen,)g(dort)g(nic)m(h)m(ts)h +(v)m(erloren)g(h\344tten.)382 4338 y(Mit)37 b(Lin)m(ux)i(2.3.38)f(wird) +g(diese)g(Situation)h(n)m(un)f(deutlic)m(h)i(v)m(erb)s(essert.)62 +b(Es)37 b(ist)h(n)m(un)382 4451 y(m\366glic)m(h,)h(die)e +(IO-Auftr\344ge)g(eines)f(Ger\344tes)h(in)f(einer)h(eigenen)g +(Request-Queue)g(zu)382 4563 y(v)m(erw)m(alten.)k(Diese)28 +b(ger\344tesp)s(ezi\034sc)m(he)h(Request-Queue)f(ist)f(in)g(einer)h +(Datenstruktur)382 4676 y(abgelegt,)36 b(die)e(auc)m(h)h(6)f(Zeiger)g +(auf)g(Prozeduren)i(en)m(th\344lt,)g(die)e(die)g(V)-8 +b(erw)m(altung)36 b(der)382 4789 y(IO-Auftr\344ge)31 +b(in)f(der)h(Request-Queue)g(steuern.)382 5067 y Fn(4.2.2.3)103 +b(Blo)s(c)m(kn)m(ummern)382 5281 y Fp(Der)35 b(Bu\033er-Cac)m(he)i +(iden)m(ti\034ziert)h(die)e(v)m(on)f(ihm)h(v)m(erw)m(alteten)i(Bl\366)s +(c)m(k)m(e)e(durc)m(h)g(Num-)382 5394 y(mern.)62 b(W)-8 +b(elc)m(he)38 b(Daten)g(w)m(elc)m(her)h(Nummer)f(zugeordnet)h(w)m +(erden,)i(wird)d(durc)m(h)g(die)1831 5622 y(33)p eop +%%Page: 34 36 +34 35 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)764 +b(4.3.)71 b(P)-8 b(ARALLELA)m(USF\334HR)m(UNG)p 382 301 +2989 4 v 382 539 a Fp(momen)m(tane)29 b(Blo)s(c)m(kgr\366\377e)f +(festgelegt.)40 b(Diese)27 b(Blo)s(c)m(kgr\366\377e)g(k)-5 +b(ann)27 b(jederzeit)h(ge\344ndert)382 652 y(w)m(erden.)78 +b(Bei)42 b(Dateisystemen)h(z.B.)f(ist)g(es)g(b)s(eliebt,)k(den)c(Sup)s +(erblo)s(c)m(k)h(mit)g(einer)382 764 y(Blo)s(c)m(kgr\366\377e)31 +b(v)m(on)f(1K)g(zu)g(sc)m(hreib)s(en,)h(w)m(\344hrend)h(auf)e(alle)g +(anderen)h(Bl\366)s(c)m(k)m(e)g(mit)f(einer)382 877 y(Blo)s(c)m +(kgr\366\377e)h(v)m(on)g(4K)g(zugegri\033en)g(wird.)382 +1024 y(Jedesmal,)36 b(w)m(enn)f(die)f(Blo)s(c)m(kgr\366\377e)h +(ge\344ndert)g(wird,)h(m)m(\374ssen)e(alle)g(Bl\366)s(c)m(k)m(e,)i(die) +e(mo-)382 1137 y(men)m(tan)25 b(im)e(Bu\033er-Cac)m(he)i(sind,)g(aus)e +(dem)h(Bu\033er-Cac)m(he)h(en)m(tfern)m(t)f(w)m(erden,)j(da)c(sic)m(h) +382 1249 y(die)31 b(Bedeutung)g(der)g(Blo)s(c)m(kn)m(ummern)h +(\344ndert.)382 1396 y(In)21 b(den)h(IO-Requests,)h(die)f(die)g +(do_request\(\))h(Prozeduren)g(der)g(T)-8 b(reib)s(er)22 +b(b)s(ek)m(ommen,)382 1509 y(w)m(erden)30 b(die)f(Daten)h(als)e +(Sektoren)i(adressiert,)g(w)m(ob)s(ei)f(jeder)g(Sektor)g(512)h(Bytes)e +(hat.)382 1655 y(W)-8 b(enn)42 b(jedo)s(c)m(h)f(die)g(Gr\366\377e)g +(eines)g(Ger\344tes)h(angegeb)s(en)g(wird,)i(w)m(erden)e(1K-Bl\366)s(c) +m(k)m(e)382 1768 y(v)m(erw)m(endet.)805 2464 y @beginspecial +4 @llx 716 @lly 261 @urx 786 @ury 2570 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//blk_sizes.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Thu May 11 14:42:19 2000 +%%Title: blk_sizes.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 4 716 261 786 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +newpath +255.118 737.008 m +56.6929 737.008 l +56.6929 722.835 l +255.118 722.835 l +closepath +0.879 0.879 0.879 rgb +F +255.118 737.008 m +56.6929 737.008 l +56.6929 722.835 l +255.118 722.835 l +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +/Times-Roman 11 sf +(Daten) +150 725 T +newpath +56.6929 742.677 m +255.118 742.677 l +S +newpath +56.6929 745.512 m +56.6929 742.677 l +S +newpath +70.8661 745.512 m +70.8661 742.677 l +S +newpath +85.0394 745.512 m +85.0394 742.677 l +S +newpath +99.2126 745.512 m +99.2126 742.677 l +S +newpath +113.386 745.512 m +113.386 742.677 l +S +newpath +127.559 745.512 m +127.559 742.677 l +S +newpath +141.732 745.512 m +141.732 742.677 l +S +newpath +155.906 745.512 m +155.906 742.677 l +S +newpath +170.079 745.512 m +170.079 742.677 l +S +newpath +184.252 745.512 m +184.252 742.677 l +S +newpath +198.425 745.512 m +198.425 742.677 l +S +newpath +212.598 745.512 m +212.598 742.677 l +S +newpath +226.772 745.512 m +226.772 742.677 l +S +newpath +240.945 745.512 m +240.945 742.677 l +S +newpath +255.118 745.512 m +255.118 742.677 l +S +newpath +56.6929 754.016 m +255.118 754.016 l +S +newpath +56.6929 756.85 m +56.6929 754.016 l +S +newpath +85.0394 756.85 m +85.0394 754.016 l +S +newpath +113.386 756.85 m +113.386 754.016 l +S +newpath +141.732 756.85 m +141.732 754.016 l +S +newpath +170.079 756.85 m +170.079 754.016 l +S +newpath +198.425 756.85 m +198.425 754.016 l +S +newpath +226.772 756.85 m +226.772 754.016 l +S +newpath +255.118 756.85 m +255.118 754.016 l +S +newpath +56.6929 765.354 m +255.118 765.354 l +S +newpath +56.6929 768.189 m +56.6929 765.354 l +S +newpath +113.386 768.189 m +113.386 765.354 l +S +newpath +170.079 768.189 m +170.079 765.354 l +S +newpath +226.772 768.189 m +226.772 765.354 l +S +newpath +56.6929 776.693 m +255.118 776.693 l +S +newpath +56.6929 779.528 m +56.6929 776.693 l +S +newpath +170.079 779.528 m +170.079 776.693 l +S +/Times-Roman 10 sf +(Sektoren) +18 742 T +(1K-Bl\366cke) +7 754 T +(2K-Bl\366cke) +7 765 T +(4K-Bl\366cke) +7 776 T +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 382 2800 a Fn(4.2.2.4)103 b(Die)35 b(Rolle)f(des)h(VFS-In) +m(terfaces)382 3005 y Fp(Die)23 b(Prozeduren,)j(die)d(die)h(Br\374c)m +(k)m(e)g(zwisc)m(hen)g(dem)f(VFS-In)m(terface)h(und)f(dem)g(Bu\033er-) +382 3118 y(Cac)m(he)f(bilden,)h(sind)d(f\374r)g(alle)h(blo)s(c)m(k)m +(orien)m(tierten)j(Ger\344te)c(gleic)m(h,)k(n\344mlic)m(h)e(blo)s(c)m +(k_read\(\),)382 3231 y(blo)s(c)m(k_write\(\))45 b(und)f(blo)s(c)m +(k_fsync\(\).)81 b(Diese)44 b(Prozeduren)h(k)m(ommen)g(somit)f(zum)382 +3344 y(Einsatz,)e(w)m(enn)e(ein)f(Proze\377)h(ein)f(blo)s(c)m(k)m +(orien)m(tiertes)j(Ger\344t)d(direkt)g(anspric)m(h)m(t)i(und)382 +3457 y(nic)m(h)m(t)h(den)f(Um)m(w)m(eg)i(\374b)s(er)d(ein)h +(Dateisystem)g(geh)m(t.)73 b(Daher)41 b(m)m(u\377)h(sic)m(h)f(der)g +(Autor)382 3570 y(eines)34 b(Ger\344tetreib)s(ers)i(n)m(ur)f(um)g(die)f +(Implemen)m(tierung)j(v)m(on)e(op)s(en\(\))g(und)g(release\(\))382 +3683 y(der)d(im)g(VFS)g(v)m(ork)m(ommenden)j(Prozeduren)f(k\374mmern.) +46 b(Des)32 b(w)m(eiteren)h(b)s(einhaltet)382 3796 y(das)k(VFS-In)m +(terface)h(zw)m(ei)h(Prozeduren,)i(die)c(n)m(ur)h(v)m(on)g(blo)s(c)m(k) +m(orien)m(tierten)j(Ger\344ten)382 3909 y(gen)m(utzt)29 +b(w)m(erden)g(k)m(\366nnen:)40 b(c)m(hec)m(k_media_c)m(hange\(\))32 +b(und)c(rev)-5 b(alidate\(\).)41 b(Die)28 b(Rolle)382 +4022 y(des)i(VFS)g(in)h(Lin)m(ux)g(v)m(or)g(der)f(V)-8 +b(ersion)31 b(2.3.38)h(ist)e(in)g(Abbildung)h(4.1)g(dargestellt.)382 +4168 y(Da)k(sic)m(h)g(der)g(v)m(on)g(blo)s(c)m(k)m(orien)m(tierten)j +(Ger\344ten)e(und)f(v)m(on)h(zeic)m(henorien)m(tierten)i(Ge-)382 +4281 y(r\344ten)32 b(gemeinsam)h(b)s(en)m(utzte)g(T)-8 +b(eil)33 b(des)f(VFS-In)m(terfaces)g(auf)f(op)s(en\(\))i(und)f +(release\(\))382 4394 y(b)s(esc)m(hr\344nkt,)45 b(hab)s(en)d(sic)m(h)f +(n)m(un)i(die)f(Kernel-En)m(t)m(wic)m(kler)j(dazu)d(durc)m(hgerungen)i +(in)382 4507 y(Zukunft,)28 b(das)e(In)m(terface)i(f\374r)f(blo)s(c)m(k) +m(orien)m(tierte)j(Ger\344te)d(v)m(on)g(dem)h(der)f(zeic)m(henorien-) +382 4620 y(tierten)f(Ger\344te)f(zu)g(trennen.)40 b(Diese)24 +b(T)-8 b(renn)m(ung)27 b(wurde)f(b)s(eginnend)g(mit)f(der)g(V)-8 +b(ersion)382 4732 y(2.3.38)31 b(eingef\374hrt.)382 5045 +y Fj(4.3)130 b(P)l(arallelausf\374hrung)382 5281 y Fp(Neb)s(en)21 +b(der)h(P)m(arallelausf\374hrung,)k(die)c(dadurc)m(h)h(zustande)f(k)m +(omm)m(t,)j(da\377)d(ein)f(Compu-)382 5394 y(ter)33 b(mit)g(mehreren)g +(Prozessoren)h(ausger\374stet)f(ist,)g(gibt)g(es)f(no)s(c)m(h)h(eine)g +(Vielzahl)g(an)1831 5622 y(34)p eop +%%Page: 35 37 +35 36 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)764 +b(4.3.)71 b(P)-8 b(ARALLELA)m(USF\334HR)m(UNG)p 382 301 +2989 4 v 1235 1614 a @beginspecial 135 @llx 659 @lly +289 @urx 799 @ury 1540 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//vfs.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Wed May 17 13:41:22 2000 +%%Title: vfs.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 135 659 289 799 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +newpath +172.913 756.85 m +172.913 765.354 l +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +pusht +172.913 765.354 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +167.244 765.354 m +167.244 756.85 l +S +pusht +167.244 756.85 translate +-90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +212.598 728.504 m +198.425 728.504 l +S +pusht +198.425 728.504 translate +180 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +[56.6929 0 0 -28.3464 141.732 751.181] rect +gsave +0.888 0.888 0.888 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[22.6772 0 0 -8.50397 158.74 756.85] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.283465 w +0 j +0 J +[] 0 d +S +newpath +198.425 734.173 m +212.598 734.173 l +1 w +S +pusht +212.598 734.173 translate +0 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +246.614 756.85 m +246.614 765.354 l +S +pusht +246.614 765.354 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +246.614 700.157 m +246.614 708.661 l +S +pusht +246.614 708.661 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +246.614 737.008 m +246.614 745.512 l +S +pusht +246.614 745.512 translate +90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +240.945 765.354 m +240.945 756.85 l +S +pusht +240.945 756.85 translate +-90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +240.945 708.661 m +240.945 700.157 l +S +pusht +240.945 700.157 translate +-90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +240.945 745.512 m +240.945 737.008 l +S +pusht +240.945 737.008 translate +-90 rotate +1 dup scale +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +212.598 751.181 m +283.465 751.181 l +283.465 666.142 l +141.732 666.142 l +141.732 694.488 l +277.795 694.488 l +277.795 745.512 l +212.598 745.512 l +212.598 751.181 l +closepath +0.88 0.88 0.88 rgb +F +212.598 751.181 m +283.465 751.181 l +283.465 666.142 l +141.732 666.142 l +141.732 694.488 l +277.795 694.488 l +277.795 745.512 l +212.598 745.512 l +212.598 751.181 l +0 0 0 rgb +S +[56.6929 0 0 -8.50397 212.598 700.157] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.283465 w +0 j +0 J +[] 0 d +S +[22.6772 0 0 -8.50397 232.441 756.85] rect +gsave +1 1 1 rgb +F +grestore +0 0 0 rgb +0.283465 w +0 j +0 J +[] 0 d +S +[141.732 0 0 -28.3465 141.732 793.701] rect +gsave +0.89 0.89 0.89 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[56.6929 0 0 -28.3464 212.598 737.008] rect +gsave +0.89 0.89 0.89 rgb +F +grestore +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +/Times-Roman 10 sf +(do_request\(\)) +[1 0 0 0.814962 215.917 693.422] T +(VFS) +[1 0 0 0.814962 234.61 750.115] T +/Times-Roman 11 sf +(Application) +186 776 T +(Buffer) +218 725 T +/Times-Roman 12 sf +(cache) +239 714 T +/Times-Roman 11 sf +(Block device) +183 674 T +(File) +147 737 T +(system) +162 728 T +/Times-Roman 10 sf +(VFS) +[1 0 0 0.814962 160.909 750.115] T +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 1076 1810 a Fp(Abbildung)31 b(4.1:)41 b(Rolle)31 +b(des)f(VFS-In)m(terfaces)382 2085 y(v)m(ersc)m(hiedenen)40 +b(Ausf\374hrungsk)m(on)m(texten)g(im)f(Lin)m(ux-Kernel.)67 +b(Da)38 b(der)h(Zugri\033)g(auf)382 2198 y(viele)h(Ressourcen,)i(die)f +(aus)f(mehreren)h(Ausf\374hrungsk)m(on)m(texten)g(v)m(erw)m(endet)h(w)m +(er-)382 2311 y(den,)29 b(nic)m(h)m(t)g(atomar)g(ist,)f(b)s(en\366tigt) +g(man)g(geeignete)h(Mec)m(hanismen,)h(um)e(den)g(Zugri\033)382 +2424 y(zu)i(regeln.)42 b([Russ00)o(])382 2717 y Fo(4.3.1)112 +b(Ausf\374hrungsk)m(on)m(texte)382 2926 y Fn(In)m(terrupts)45 +b Fp(In)m(terrupthandler)g(sind)d(Prozeduren)j(des)d(Betriebssystems,)k +(deren)609 3039 y(Ausf\374hrung)36 b(durc)m(h)h(zur)f(CPU)g(externe)h +(Ereignisse)f(angesto\377en)h(wird.)57 b(Die)609 3152 +y(Ausf\374hrung)26 b(eines)f(In)m(terrupthandlers)j(k)-5 +b(ann)25 b(wiederum)i(v)m(on)f(In)m(terrupts)g(un-)609 +3265 y(terbro)s(c)m(hen)d(w)m(erden;)i(daher)d(m)m(u\377)f(ein)h(In)m +(terrupthandler)h(auc)m(h)f(reen)m(tran)m(t)h(pro-)609 +3377 y(grammiert)37 b(w)m(erden)f(\(es)f(sei)f(denn,)j(er)e(un)m +(terbindet)i(den)e(Aufruf)f(v)m(on)i(In)m(ter-)609 3490 +y(rupthandlern\).)382 3678 y Fn(Bottom)f(Halv)m(es)46 +b Fp(Aktionen,)41 b(die)f(aufgrund)g(eines)f(In)m(terrupts)h +(ausgef\374hrt)f(w)m(er-)609 3791 y(den,)24 b(ab)s(er)d(nic)m(h)m(t)j +(so)d(dringend)i(sind,)g(da\377)f(sie)f(unmittelbar)i(im)f(In)m +(terrupthand-)609 3904 y(ler)g(ausgef\374hrt)h(w)m(erden)g(m)m +(\374ssen,)h(w)m(erden)f(in)f(Bottom)h(Halv)m(es)f(un)m(tergebrac)m(h)m +(t.)609 4017 y(Die)31 b(32)f(Bottom)h(Halv)m(es)f(un)m(ter)h(Lin)m(ux)h +(sind)e(statisc)m(h)h(v)m(ergeb)s(en.)41 b(W)-8 b(enn)31 +b(man)609 4130 y(als)23 b(Autor)h(eines)f(mo)s(dularisierten)i(T)-8 +b(reib)s(ers)24 b(eine)g(Prozedur)h(als)e(Bottom)h(Half)609 +4243 y(ausf\374hren)34 b(lassen)f(will,)i(m)m(u\377)f(man)g(sic)m(h)g +(der)f(T)-8 b(ask-Queue)35 b(\022tq_immediate\021)609 +4355 y(b)s(edienen.)45 b(In)31 b(einem)h(In)m(terrupthandler)i(k)m +(\366nnen)f(b)s(eliebige)f(Bottom)h(Halv)m(es)609 4468 +y(markiert)f(w)m(erden.)44 b(Die)31 b(Ausf\374hrung)g(aller)g +(markierten)i(Bottom)e(Halv)m(es)g(er-)609 4581 y(folgt)k(b)s(ei)g +(jedem)g(Sc)m(heduling-V)-8 b(organg)39 b(und)c(b)s(ei)g(der)g(R\374c)m +(kk)m(ehr)g(v)m(on)h(einem)609 4694 y(Systemruf.)47 b(Die)33 +b(Markierung)g(wird)g(b)s(ei)g(der)f(Ausf\374hrung)h(wieder)h +(gel\366sc)m(h)m(t.)609 4807 y(Bottom)d(Halv)m(es)g(m)m(\374ssen)f(nic) +m(h)m(t)i(reen)m(tran)m(t)h(sein.)609 4920 y(Mit)21 b(der)g(Kernelv)m +(ersion)i(2.3.43)f(w)m(erden)g(die)f(Bottom)h(Halv)m(es)f(durc)m(h)h +(SoftIR)m(Qs)609 5033 y(abgel\366st.)56 b(SoftIR)m(Qs)34 +b(un)m(tersc)m(heiden)k(sic)m(h)e(dadurc)m(h)h(v)m(on)e(den)h(Bottom)f +(Hal-)609 5146 y(v)m(es,)30 b(da\377)g(einzelne)h(SoftIR)m(Qs)e(auf)h +(v)m(ersc)m(hiedenen)i(CPUs)d(gleic)m(hzeitig)j(laufen)609 +5259 y(d\374rfen.)1831 5622 y(35)p eop +%%Page: 36 38 +36 37 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)764 +b(4.3.)71 b(P)-8 b(ARALLELA)m(USF\334HR)m(UNG)p 382 301 +2989 4 v 382 539 a Fn(T)f(ask)35 b(Queues)46 b Fp(Hier)d(k)-5 +b(ann)43 b(man)h(dynamisc)m(h)g(Prozeduren)h(registrieren,)j(die)43 +b(zu)609 652 y(b)s(estimm)m(ten)i(Zeitpunkten)f(ausgef\374hrt)g(w)m +(erden)h(sollen.)80 b(Da)43 b(die)h(Ausf\374h-)609 764 +y(rung)25 b(der)g(T)-8 b(ask-Queues)25 b(im)f(Rahmen)h(der)g(Abarb)s +(eitung)g(der)f(Bottom)i(Halv)m(es)609 877 y(statt\034ndet,)34 +b(gilt)e(das)f(dort)i(Angef\374hrte.)45 b(T)-8 b(ask)32 +b(Queues,)g(die)h(im)e(Kernel)i(zur)609 990 y(V)-8 b(erf\374gung)32 +b(stehen:)609 1203 y(tq_immediate)78 b(Wird)36 b(b)s(ei)f(jeder)h +(Ausf\374hrung)g(der)g(Bottom)g(Halv)m(es)g(abge-)1234 +1316 y(arb)s(eitet.)609 1462 y(tq_timer)262 b(Wird)41 +b(nac)m(h)i(jedem)e(Timerin)m(terrupt)j(abgearb)s(eitet.)74 +b(\(100)1234 1575 y(mal)36 b(pro)f(Sekunde)h(auf)e(i386,)j(1000)e(mal)h +(pro)f(Sekunde)h(auf)1234 1688 y(Alpha\))609 1834 y(tq_sc)m(heduler)109 +b(Wird)31 b(b)s(ei)f(jedem)h(Aufruf)e(des)i(Sc)m(hedulers)h(abgearb)s +(eitet.)382 2046 y Fn(Proze\377)46 b Fp(Ein)37 b(Proze\377)i(k)-5 +b(ann)37 b(en)m(t)m(w)m(eder)j(seinen)d(Programmco)s(de,)k(o)s(der)c +(ab)s(er)g(auc)m(h)609 2159 y(den)27 b(Co)s(de)f(des)g(Betriebssystems) +g(ausf\374hren.)39 b(Im)26 b(ersten)h(F)-8 b(all)26 b(k)-5 +b(ann)27 b(die)f(Aus-)609 2272 y(f\374hrung)32 b(jederzeit)f(un)m +(terbro)s(c)m(hen)i(und)f(mit)f(einem)g(anderen)h(Proze\377)g(fortge-) +609 2385 y(setzt)d(w)m(erden.)42 b(Dies)28 b(ist)h(eine)g(ganz)g +(normale)h(Eigensc)m(haft)h(eines)e(Betriebssy-)609 2498 +y(stems,)h(das)h(pr\344emptiv)m(es)g(Multitasking)g(hat.)609 +2611 y(F\374hrt)22 b(der)g(Proze\377)g(gerade)h(einen)f(T)-8 +b(eil)22 b(des)f(Kernels)h(aus,)h(b)s(e\034ndet)f(er)g(sic)m(h)g(also) +609 2724 y(im)35 b(Kernelk)m(on)m(text,)i(k)-5 b(ann)35 +b(er)f(zw)m(ar)i(durc)m(h)f(einen)g(In)m(terrupt)h(kurzfristig)e(un-) +609 2837 y(terbro)s(c)m(hen)h(w)m(erden;)h(danac)m(h)f(wird)f(er)f +(allerdings)h(w)m(eiter)h(ausgef\374hrt.)49 b(D.h.)609 +2950 y(im)40 b(Kernelk)m(on)m(text)i(ist)e(Lin)m(ux)g(zum)h(heutigen)g +(Zeitpunkt)g(nic)m(h)m(t)g(pr\344em)m(tiv.)609 3062 y(Im)34 +b(Laufe)h(der)g(2.3.x)f(En)m(t)m(wic)m(klung)j(wurden)f(die)e +(M\366glic)m(hk)m(eiten)j(diskutiert,)609 3175 y(auc)m(h)i(den)g +(Kernelk)m(on)m(text)h(pr\344emptiv)f(zu)f(gestalten,)j(es)d(ist)f(ab)s +(er)h(un)m(w)m(ahr-)609 3288 y(sc)m(heinlic)m(h,)33 b(da\377)d(das)h(b) +s(ereits)f(b)s(ei)g(Lin)m(ux)h(2.4.x)g(der)g(F)-8 b(all)31 +b(sein)f(wird.)382 3582 y Fo(4.3.2)112 b(Sync)m(hronisationsprimitiv)m +(e)382 3803 y Fp(Die)35 b(grundlegenden)h(Mec)m(hanismen,)i(aus)c +(denen)h(die)g(h\366heren)h(Sync)m(hronisations-)382 +3916 y(ob)5 b(jekte)30 b(aufgebaut)i(sind:)382 4178 y +Fn(cti\(\)/sti\(\))47 b Fp(Sp)s(erren)24 b(und)g(F)-8 +b(reigeb)s(en)25 b(aller)f(In)m(terrupts.)39 b(Es)23 +b(gibt)h(no)s(c)m(h)g(w)m(eitere)h(V)-8 b(a-)609 4291 +y(rian)m(ten)31 b(dieser)f(K)m(ommandos,)i(die)e(ab)s(er)f(k)m(eine)i +(grunds\344tzlic)m(h)g(andere)g(F)-8 b(unk-)609 4404 +y(tion)31 b(zur)g(V)-8 b(erf\374gung)31 b(stellen.)382 +4592 y Fn(Spinlo)s(c)m(ks)44 b Fp(Ein)32 b(Spinlo)s(c)m(k)g(ist)f(ein)g +(Sync)m(hronisationsob)5 b(jekt,)33 b(das)f(n)m(ur)g(einmal)g(b)s(e-) +609 4705 y(legt)24 b(w)m(erden)i(k)-5 b(ann.)38 b(Ist)23 +b(es)h(b)s(ereits)g(b)s(elegt,)h(wird)g(so)e(lange)i(eine)f(W)-8 +b(artesc)m(hleife)609 4817 y(ausgef\374hrt,)31 b(bis)f(der)h(Spinlo)s +(c)m(k)g(wieder)g(frei)f(ist.)40 b(Ein)31 b(Spinlo)s(c)m(k)g(k)-5 +b(ann)31 b(n)m(ur)g(f\374r)609 4930 y(die)i(Sync)m(hronisation)i(zwisc) +m(hen)f(zw)m(ei)f(CPUs)g(v)m(erw)m(endet)h(w)m(erden.)49 +b(F)-8 b(alls)33 b(ein)609 5043 y(Kernel)27 b(f\374r)e(einen)i +(Computer)g(mit)f(n)m(ur)h(einem)f(Prozessor)g(erzeugt)h(wird,)g(w)m +(er-)609 5156 y(den)k(Spinlo)s(c)m(ks)g(b)s(ei)f(der)h(\334b)s +(ersetzung)f(des)h(Quellco)s(des)g(eliminiert.)1831 5622 +y(36)p eop +%%Page: 37 39 +37 38 bop 382 264 a Fl(KAPITEL)31 b(4.)71 b(LINUX)764 +b(4.3.)71 b(P)-8 b(ARALLELA)m(USF\334HR)m(UNG)p 382 301 +2989 4 v 382 539 a Fn(W)f(ait)36 b(Queues)46 b Fp(Eine)35 +b(W)-8 b(ait-Queue)36 b(bietet)g(zw)m(ei)f(F)-8 b(unktionen:)51 +b(Ein)35 b(Proze\377)g(k)-5 b(ann)609 652 y(mit)28 b(sleep_on\(\))g +(auf)f(ein)h(Ereignis)g(w)m(arten.)41 b(Dab)s(ei)27 b(wird)h(der)f(Sc)m +(heduler)j(auf-)609 764 y(gerufen,)j(und)f(der)g(Proze\377)h(gibt)f +(die)g(CPU)g(ab.)45 b(T)-8 b(ritt)33 b(n)m(un)g(das)e(Ereignis)i(ein,) +609 877 y(so)38 b(k)-5 b(ann)37 b(man)h(alle)h(Prozesse,)h(die)e(in)f +(einer)i(W)-8 b(ait-Queue)39 b(w)m(arten,)i(w)m(ec)m(k)m(en.)609 +990 y(F\374r)f(den)g(gew)m(ec)m(kten)i(Proze\377)f(b)s(edeutet)f(das,)i +(da\377)e(der)g(sleep_on\(\))h(Aufruf)609 1103 y(zur\374c)m(kk)m(ehrt.) +609 1216 y(Sleep_on\(\))29 b(gibt)f(es)f(in)g(zw)m(ei)h(V)-8 +b(arian)m(ten;)31 b(eine)d(l\344\377t)f(den)h(Proze\377)g(im)g(Zustand) +609 1329 y(T)-8 b(ASK_UNINTERR)m(UPTIBLE)22 b(w)m(arten,)i(w)m +(\344hrend)e(sleep_on_in)m(terruptible\(\))609 1442 y(den)36 +b(Proze\377)h(im)e(Zustand)h(T)-8 b(ASK_INTERR)m(UPTIBLE)38 +b(w)m(arten)f(l\344\377t.)56 b(Ein)609 1555 y(Proze\377)37 +b(im)f(ersten)g(der)g(b)s(eiden)g(Zust\344nde)g(reagiert)h(auf)e(k)m +(eine)h(Signale)h(und)609 1668 y(k)-5 b(ann)31 b(daher)h(auc)m(h)g(nic) +m(h)m(t)h(mit)e(dem)g(Kill-K)m(ommando)j(aus)d(dem)h(System)f(en)m(t-) +609 1781 y(fern)m(t)g(w)m(erden.)382 2043 y(Darauf)e(aufbauend)h(gibt)f +(es)g(Semaphore)i(und)e(in)g(neueren)h(V)-8 b(ersionen)30 +b(\(2.3.x\))f(auc)m(h)382 2156 y(eine)f(Sc)m(hreib-)i(und)e(Lesev)-5 +b(arian)m(te)29 b(v)m(on)g(Semaphoren.)41 b(Semaphore)30 +b(k)m(\366nne)e(zur)g(Syn-)382 2269 y(c)m(hronisation)h(v)m(on)f +(Prozessen)h(im)e(Kernelk)m(on)m(text)j(eingesetzt)f(w)m(erden.)41 +b(Semaphore)382 2382 y(k)m(\366nnen)36 b(nat\374rlic)m(h)g(nic)m(h)m(t) +h(in)e(In)m(terrupthandlern)j(und)d(Bottom)h(Halv)m(es)e(eingesetzt)382 +2495 y(w)m(erden,)46 b(da)c(diese)g(au\377erhalb)i(eines)e(Proze\377k)m +(on)m(textes)i(ausgef\374hrt)f(w)m(erden)g(und)382 2608 +y(Semaphore)32 b(einen)f(Proze\377k)m(on)m(text)i(brauc)m(hen.)382 +2770 y(Spinlo)s(c)m(ks)39 b(k)m(\366nnen)h(eb)s(enfalls)f(f\374r)g(die) +g(Sync)m(hronisation)i(zwisc)m(hen)g(Prozessen)e(im)382 +2883 y(Kernelk)m(on)m(text)32 b(eingesetzt)e(w)m(erden.)42 +b(Spinlo)s(c)m(ks)30 b(gibt)g(es)g(b)s(ereits)f(in)h(den)g(2.2.x)g(V)-8 +b(er-)382 2996 y(sionen)39 b(des)g(Kernels)g(in)g(Sc)m(hreib-)i(und)e +(Lesev)-5 b(arian)m(ten.)67 b(Sie)40 b(eignen)f(sic)m(h)h(gut)f(f\374r) +382 3109 y(Sync)m(hronisationsaufgab)s(en,)44 b(b)s(ei)c(denen)h(die)f +(Ressource)f(n)m(ur)i(f\374r)f(kurze)g(Zeit)g(ge-)382 +3222 y(sc)m(h)m(\374tzt)f(w)m(erden)g(m)m(u\377.)62 b(W\344hrend)38 +b(man)g(einen)g(Spinlo)s(c)m(k)g(b)s(esetzt)f(hat,)j(darf)d(man)382 +3335 y(auf)30 b(k)m(einen)h(F)-8 b(all)31 b(den)g(Sc)m(heduler)h +(aufrufen.)382 3498 y(F\374r)37 b(die)g(Sync)m(hronisation)i(zwisc)m +(hen)f(In)m(terrupts)f(und)g(Prozessen)h(im)f(Kernelk)m(on-)382 +3610 y(text)24 b(steh)m(t)h(eine)f(V)-8 b(arian)m(te)26 +b(der)e(Spinlo)s(c)m(ks)g(zur)h(V)-8 b(erf\374gung,)26 +b(die)f(die)f(Ausf\374hrung)g(v)m(on)382 3723 y(In)m(terrupts)j(auf)f +(der)h(lok)-5 b(alen)27 b(CPU)f(v)m(erhindert.)41 b(F)-8 +b(alls)26 b(es)g(sic)m(h)h(um)g(die)f(Sc)m(hreib-)i(und)382 +3836 y(Lesev)-5 b(arian)m(te)40 b(der)e(Spinlo)s(c)m(ks)g(handelt)h +(und)g(man)f(innerhalb)h(des)f(In)m(terrupthand-)382 +3949 y(lers)31 b(n)m(ur)h(lesend)g(auf)f(die)h(Ressource)f(zugreifen)h +(will,)g(k)-5 b(ann)32 b(man)g(dort)g(die)f(normale)382 +4062 y(V)-8 b(arian)m(te)32 b(des)e(Spinlo)s(c)m(ks)h(v)m(erw)m(enden.) +680 4250 y(Innerhalb)25 b(des)e(In)m(terrupthandlers)j(m)m(u\377)f(im)f +(Normalfall)g(eb)s(enfalls)g(die)g(_ir-)680 4363 y(qsa)m(v)m(e\(\))34 +b(V)-8 b(arian)m(te)36 b(der)e(Spinlo)s(c)m(k-Op)s(erationen)i(v)m(erw) +m(endet)g(w)m(erden,)g(denn)680 4476 y(w)m(enn)d(der)g(In)m(terrupt)h +(w)m(\344hrend)f(der)g(Abarb)s(eitung)g(des)f(In)m(terrupthandlers)680 +4588 y(ein)41 b(w)m(eiteres)g(Mal)f(auftritt)1671 4555 +y Fg(2)1711 4588 y Fp(,)j(wird)e(diese)f(un)m(terbro)s(c)m(hen,)45 +b(der)c(In)m(terrupt-)680 4701 y(handler)48 b(no)s(c)m(heinmal)h +(aufgerufen)f(und)f(der)h(erste)f(Aufruf)f(danac)m(h)j(wie-)680 +4814 y(der)43 b(fortgesetzt.)77 b(Im)41 b(Proze\377k)m(on)m(text)k(ist) +d(die)h(_irqsa)m(v)m(e\(\))g(V)-8 b(arian)m(te)44 b(der)680 +4927 y(Spinlo)s(c)m(k-Op)s(erationen)g(not)m(w)m(endig,)k(um)42 +b(die)g(A)m(tomizit\344t)h(zu)f(gew)m(\344hrlei-)680 +5040 y(sten,)33 b(im)f(K)m(on)m(text)h(des)f(In)m(terrupthandlers)i +(wird)f(dadurc)m(h)h(auc)m(h)f(no)s(c)m(h)f(ein)680 5153 +y(Deadlo)s(c)m(k)f(v)m(erhindert.)p 382 5214 1196 4 v +486 5268 a Ff(2)520 5300 y Fe(Das)26 b(ist)g(nat\374rlic)n(h)g(n)n(ur)e +(mit)h(\035ank)n(engetriggerten)h(In)n(terrupts)e(m\366glic)n(h.)1831 +5622 y Fp(37)p eop +%%Page: 38 40 +38 39 bop 382 262 a Fl(KAPITEL)31 b(4.)71 b(LINUX)1451 +b(4.4.)71 b(THREADS)p 382 299 2989 4 v 680 539 a Fp(Handelt)33 +b(es)f(sic)m(h)h(n)m(un)h(um)e(einen)h(Sc)m(heib-)h(und)f(Lese-Spinlo)s +(c)m(k)h(und)f(ist)f(im)680 652 y(In)m(terrupthandler)26 +b(n)m(ur)e(lesender)f(Zugri\033)h(erforderlic)m(h,)i(k)-5 +b(ann)23 b(innerhalb)i(des)680 764 y(In)m(terrupts)31 +b(die)g(normale)g(V)-8 b(arian)m(te)32 b(der)e(Op)s(erationen)i(v)m +(erw)m(endet)g(w)m(erden.)680 877 y(Da)37 b(mehrere)h(Leser)g(auf)f +(einmal)h(erlaubt)g(sind,)g(k)-5 b(ann)38 b(es)e(daher)i(b)s(ei)f +(einer)680 990 y(zw)m(eiten,)25 b(gleic)m(hzeitigen)f(Ausf\374hrung)e +(des)f(In)m(terrupthandlers)j(auf)d(der)h(glei-)680 1103 +y(c)m(hen)31 b(CPU)g(nic)m(h)m(t)h(zu)f(diesem)f(Deadlo)s(c)m(k)h(k)m +(ommen.)382 1439 y Fj(4.4)130 b(Threads)382 1692 y Fp(In)30 +b(vielen)g(anderen)i(Betriebssystemen)e(wurde)h(mit)g(der)g +(Einf\374hrung)g(v)m(on)g(Threads)382 1805 y(der)42 b(Proze\377)g +(derart)h(v)m(er\344ndert,)j(da\377)c(er)f(n)m(ur)i(mehr)f(eine)g +(Umgebung)g(ist,)j(in)c(der)382 1918 y(eine)33 b(b)s(eliebige)h(Zahl)g +(v)m(on)f(Threads)h(laufen)f(k)-5 b(ann.)49 b(Der)33 +b(Proze\377)h(stellt)g(dab)s(ei)f(k)m(eine)382 2031 y(Einheit)40 +b(f\374r)e(den)h(Sc)m(heduler)i(dar,)g(ist)d(ab)s(er)h(no)s(c)m(h)g +(eine)g(Einheit)h(f\374r)e(viele)h(andere)382 2144 y(Subsysteme)h(des)f +(Betriebssystems,)j(wie)d(z.B.)h(f\374r)f(die)h(Sp)s(eic)m(herv)m(erw)m +(altung)j(und)382 2257 y(Filesysteme.)382 2419 y(Da)25 +b(dieser)g(\334b)s(ergang)h(eine)g(einsc)m(hneidende)h(V)-8 +b(er\344nderung)27 b(f\374r)e(ein)g(Betriebssystem)382 +2532 y(darstellt,)35 b(wurde)f(un)m(ter)g(Lin)m(ux)g(ein)g(anderer)g +(Ansatz)f(gew)m(\344hlt.)51 b(Dab)s(ei)33 b(wurde)h(der)382 +2645 y(Sp)s(eic)m(herk)m(on)m(text)i(und)e(der)f(Dateisystemk)m(on)m +(text)i(aus)e(dem)h(Proze\377)g(herausgel\366st,)382 +2758 y(so)s(da\377)39 b(n)m(un)h(Prozesse)g(diese)g(gemeinsam)g(b)s(en) +m(utzen)h(k)m(\366nnen.)69 b(Dies)39 b(spiegelt)h(sic)m(h)382 +2871 y(auc)m(h)35 b(in)f(der)g(Implemen)m(tierung)j(wieder;)f(das)e(In) +m(terface)h(der)f(Systemrufe)g(hat)g(sic)m(h)382 2984 +y(n)m(ur)e(dadurc)m(h)g(v)m(er\344ndert,)h(da\377)f(eine)f(v)m +(erallgemeinerte)j(F)-8 b(orm)32 b(des)e(fork\(2\))h(System-)382 +3097 y(rufes)f(hinzugek)m(ommen)j(ist.)382 3260 y(Mit)g(Hilfe)g(dieser) +h(Kernelerw)m(eiterung)j(wurde)d(eine)g(POSIX-k)m(onforme)h(Threading) +382 3372 y(Library)29 b(gesc)m(ha\033en.)41 b(Diese)28 +b(stellt)g(den)g(Applik)-5 b(ationsprogrammen)31 b(mit)e(einer)f(klei-) +382 3485 y(nen)34 b(Ausnahme)970 3452 y Fg(3)1043 3485 +y Fp(das)f(POSIX-k)m(onforme)i(V)-8 b(erhalten,)36 b(in)d(dem)h +(Threads)g(Bestand-)382 3598 y(teile)d(eines)f(Prozesses)h(sind,)f(zur) +h(V)-8 b(erf\374gung.)382 3891 y Fo(4.4.1)112 b(Kernel-Threads)382 +4113 y Fp(Diese)22 b(Ausk)m(opp)s(elung)g(des)g(Sp)s(eic)m(herk)m(on)m +(textes)j(und)d(des)g(Dateisystemk)m(on)m(textes)h(er-)382 +4226 y(m\366glic)m(h)m(te)33 b(auc)m(h)e(die)f(problemlose)i +(Einf\374hrung)f(v)m(on)g(Kernel-Threads.)42 b(Diese)30 +b(sind)382 4339 y(Prozesse,)47 b(die)c(innerhalb)h(des)f(Kernels)h +(erzeugt)g(w)m(erden)g(k)m(\366nnen,)k(um)43 b(dort)h(b)s(e-)382 +4452 y(stimm)m(te)30 b(Aufgab)s(en)g(zu)f(\374b)s(ernehmen.)42 +b(Da)29 b(sie)g(nie)h(Programmco)s(de)h(im)f(Userspace)382 +4565 y(ausf\374hren,)h(hab)s(en)g(sie)f(auc)m(h)h(k)m(einen)g(Sp)s(eic) +m(herk)m(on)m(text.)p 382 4626 1196 4 v 486 4680 a Ff(3)520 +4712 y Fe(W\344hrend)g(laut)g(POSIX)f(Signale,)k(die)e(an)f(einen)g +(Proze\377)i(adressiert)f(sind,)h(an)f(alle)g(Threads)382 +4803 y(geliefert)j(w)n(erden,)h(wird)e(un)n(ter)f(Lin)n(ux)f(ein)i +(Signal)g(n)n(ur)f(an)h(jenen)f(Thread)h(geliefert,)k(an)33 +b(den)g(es)382 4894 y(adressiert)27 b(wurde.)1831 5622 +y Fp(38)p eop +%%Page: 39 41 +39 40 bop 382 262 a Fl(KAPITEL)31 b(4.)71 b(LINUX)1491 +b(4.5.)71 b(MODULE)p 382 299 2989 4 v 382 539 a Fj(4.5)130 +b(Mo)t(dule)382 791 y Fp(V)-8 b(or)29 b(der)g(V)-8 b(ersion)29 +b(2.0)f(des)h(Lin)m(ux-Kernels)h(k)m(onn)m(ten)g(Ger\344tetreib)s(er)g +(n)m(ur)f(statisc)m(h)g(in)382 904 y(den)k(Kernel)g(eincompiliert)h(w)m +(erden.)48 b(Damals)32 b(w)m(ar)i(es)d(\374blic)m(h,)k(nac)m(h)e(der)g +(erfolgrei-)382 1017 y(c)m(hen)h(Installation)h(des)e(Lin)m +(ux-Systems,)i(den)f(Kernel)h(selbst)e(neu)h(zu)g(compilieren,)382 +1130 y(und)f(dab)s(ei)g(n)m(ur)h(jene)f(Ger\344tetreib)s(er)h(in)f(den) +g(Kernel)h(einzubinden,)h(die)e(man)g(auc)m(h)382 1243 +y(tats\344c)m(hlic)m(h)f(brauc)m(h)m(te.)382 1406 y(Nic)m(h)m(t)24 +b(n)m(ur)h(f\374r)e(den)h(An)m(w)m(ender)h(w)m(ar)f(diese)g(Situation)h +(nic)m(h)m(t)g(zufriedenstellend,)h(auc)m(h)382 1519 +y(w)m(ar)40 b(damals)f(die)h(En)m(t)m(wic)m(klung)i(eines)d(neuen)h +(Ger\344tetreib)s(ers)f(sehr)g(umst\344ndlic)m(h,)382 +1632 y(denn)29 b(die)g(einzige)g(M\366glic)m(hk)m(eit,)i(den)e(T)-8 +b(reib)s(er)29 b(neu)g(zu)g(starten,)g(w)m(ar)h(es,)e(das)h(Zielsy-)382 +1744 y(stem)h(mit)h(dem)g(neuen)g(Kernel)g(neu)g(zu)g(starten.)382 +1907 y(Mit)c(V)-8 b(ersion)28 b(2.0)f(wurde)h(der)g(Kernel)g(um)g +(einen)g(Loader)g(erw)m(eitert,)i(der)d(es)g(erlaubt,)382 +2020 y(in)j(den)h(laufenden)g(Kernel)h(Mo)s(dule)e(einzuf\374gen)i +(bzw.)41 b(zu)30 b(en)m(tfernen.)382 2183 y(Die)37 b(Sc)m(hnittstelle,) +j(der)e(sic)m(h)f(ein)g(Autor)g(eines)g(Mo)s(duls)g(b)s(edienen)g(k)-5 +b(ann,)39 b(ist)d(ab)s(er)382 2296 y(k)m(ein)26 b(F)-8 +b(ramew)m(ork,)28 b(wie)e(das)g(b)s(ei)f(T)-8 b(reib)s(ersc)m +(hnittstellen)29 b(vieler)c(Betriebssysteme)h(der)382 +2409 y(F)-8 b(all)35 b(ist.)53 b(Es)34 b(stehen)h(eine)g(Menge)g +(Prozeduren)i(und)e(Makros)f(zur)g(V)-8 b(erf\374gung,)37 +b(die)382 2522 y(neb)s(en)g(den)f(F)-8 b(unktionen,)40 +b(die)d(sp)s(eziell)f(f\374r)h(Mo)s(dule)f(zur)h(V)-8 +b(erf\374gung)37 b(stehen)g(\(z.B.)382 2634 y +(register_\034lesystem\(\),)30 b(restister_blkdev\(\),)f(usw.\),)f(auc) +m(h)h(eine)f(gute)g(Ausw)m(ahl)g(der)382 2747 y(allgemeinen)k(F)-8 +b(unktionen)32 b(des)e(Kernels)h(aufw)m(eisen.)382 2910 +y(Diese)37 b(Kernelsc)m(hnittstelle)j(ist)e(zwisc)m(hen)g(v)m(ersc)m +(hiedenen)i(V)-8 b(ersionen)39 b(des)e(Kernels)382 3023 +y(nic)m(h)m(t)32 b(bin\344rk)m(ompatib)s(el,)g(man)f(k)-5 +b(ann)30 b(jeo)s(c)m(h)g(Mo)s(dule)g(anderer)h(Kernelv)m(ersionen)h +(la-)382 3136 y(den)26 b(und)g(wird)f(zumindest)i(darauf)f(aufmerksam)f +(gemac)m(h)m(t,)k(da\377)d(dieser)g(V)-8 b(organg)26 +b(zu)382 3249 y(einem)31 b(Systemabsturz)g(f\374hren)g(k)-5 +b(ann.)382 3411 y(Do)s(c)m(h)35 b(b)s(eim)g(V)-8 b(ersuc)m(h,)37 +b(ein)e(Mo)s(dul,)h(das)f(f\374r)f(eine)i(Ein-Prozessor-Masc)m(hine)h +(\374b)s(er-)382 3524 y(setzt)27 b(wurde,)h(in)f(einen)g +(Mehr-Prozessor-Kernel)j(zu)d(laden,)h(wird)f(man)g(leider)h(nic)m(h)m +(t)382 3637 y(gew)m(arn)m(t.)48 b(So)m(w)m(ohl)34 b(diese,)f(als)f(auc) +m(h)h(die)g(umgek)m(ehrte)h(K)m(om)m(bination)h(\(SMP-Mo)s(dul)382 +3750 y(in)30 b(UP-Kernel\))i(ist)e(leider)h(sehr)g(instabil.)1831 +5622 y(39)p eop +%%Page: 40 42 +40 41 bop 382 1211 a Fk(Kapitel)62 b(5)382 1676 y Fm(Implemen)-6 +b(tierung)382 2171 y Fp(Es)33 b(gibt)g(zw)m(ar)h(ein)g(paar)f(w)m +(enige,)i(jedo)s(c)m(h)f(in)f(der)g(Regeln)g(nic)m(h)m(t)i(aktuelle,)f +(Un)m(terla-)382 2284 y(gen,)k(die)e(einem)h(b)s(ei)f(der)g(Implemen)m +(tierung)j(eines)d(T)-8 b(reib)s(ers)37 b(f\374r)f(Lin)m(ux)h(b)s +(ehil\035ic)m(h)382 2397 y(sind.)59 b(Nun)36 b(wurde)h(endlic)m(h)h +(eine)f(Neuau\035age)h(des)e(diesb)s(ez\374glic)m(h)i(b)s(esten)f(Buc)m +(hes)382 2510 y([Rub98])j(angek\374ndigt,)j(die)c(den)h(Lin)m +(ux-Kernel)i(in)d(der)h(V)-8 b(ersion)40 b(2.2.x)f(ab)s(dec)m(k)m(en) +382 2622 y(soll.)h(Es)28 b(wird)h(sic)m(h)g(allerdings)g(erst)f +(herausstellen,)i(ob)f(diese)g(zw)m(eite)g(Au\035age)g(wirk-)382 +2735 y(lic)m(h)i(erh\344ltlic)m(h)h(ist,)f(b)s(ev)m(or)f(die)h(V)-8 +b(ersion)31 b(2.4.x)f(des)h(Lin)m(ux-Kernels)h(fertig)e(ist.)382 +2898 y(Auc)m(h)i(ist)g(das)g(F)-8 b(ramew)m(ork,)34 b(in)e(das)f(sic)m +(h)i(ein)f(T)-8 b(reib)s(er)33 b(eingliedern)g(m)m(u\377,)h(v)m +(erst\344nd-)382 3011 y(lic)m(herw)m(eise)i(auf)e(T)-8 +b(reib)s(er)35 b(ausgeric)m(h)m(tet,)i(die)e(ric)m(h)m(tige)h(Hardw)m +(are)f(ansprec)m(hen,)i(w)m(as)382 3124 y(nic)m(h)m(t)27 +b(zuletzt)f(zu)f(einigen)h(Problemen)h(b)s(ei)e(der)h(Implemen)m +(tierung)i(dieses)d(virtuellen)382 3237 y(Massensp)s(eic)m +(herger\344tes)31 b(f\374hrte.)382 3400 y(Dieses)22 b(Kapitel)i(b)s +(ezieh)m(t)g(sic)m(h)f(auf)g(V)-8 b(ersion)23 b(0.5.3)h(v)m(on)f(DRBD.) +f(Alle)h(v)m(er\366\033en)m(tlic)m(h)m(ten)382 3512 y(V)-8 +b(ersionen)21 b(v)m(on)g(DRBD)f(sind)g(un)m(ter)h(h)m +(ttp://www.complang.tu)m(wien.)q(ac.at/)q(reisner/)q(drb)s(d/)382 +3625 y(erh\344ltlic)m(h.)382 3962 y Fj(5.1)130 b(Struktur)382 +4214 y Fp(Den)33 b(Hauptteil)g(des)f(Programmco)s(des,)j(knapp)e(2500)g +(Zeilen)h(C,)e(bildet)i(ein)f(Mo)s(dul)382 4327 y(f\374r)d(den)i +(Kernel,)g(das)e(ein)h(Blo)s(c)m(kger\344t)h(implemen)m(tiert.)44 +b(Da)31 b(f\374r)g(die)g(K)m(on\034guration)382 4440 +y(Information)46 b(v)m(om)g(An)m(w)m(ender)h(erforderlic)m(h)g(ist)e +(und)g(DRBD)g(auc)m(h)h(auf)f(externe)382 4553 y(Ereignisse)d +(reagieren)g(m)m(u\377,)j(k)-5 b(ann)41 b(das)g(Kernelmo)s(dul,)k(das)c +(aus)g(dem)h(Userspace)382 4666 y(n)m(ur)h(als)e(Blo)s(c)m(kger\344t)i +(sic)m(h)m(tbar)g(ist,)h(\374b)s(er)e(den)g(io)s(ctl\(\))h(Systemruf)e +(Informationen)382 4779 y(en)m(tgegennehmen.)382 4942 +y(Die)g(f\374r)g(den)h(An)m(w)m(ender)h(greifbare)f(Seite)g(der)f(io)s +(ctl\(\))h(Systemrufe)f(ist)g(im)g(drb)s(d-)382 5054 +y(setup)31 b(\(rund)g(350)g(Zeilen\))g(Utilit)m(y)g(implemen)m(tiert.) +43 b(Es)31 b(wird)g(un)m(ter)g(anderem)h(dazu)382 5167 +y(v)m(erw)m(endet,)27 b(die)c(not)m(w)m(endigen)j(IP-A)m(dressen)d(an)h +(das)f(Kernelmo)s(dul)h(w)m(eiterzugeb)s(en.)382 5280 +y(Es)40 b(wurde)g(allerdings)h(so)f(ausgelegt,)j(da\377)e(sic)m(h)f(k)m +(ein)g(f\374r)g(das)g(F)-8 b(unktionieren)42 b(des)382 +5393 y(Ger\344tes)30 b(not)m(w)m(endiger)k(Programm)m(teil)f(im)e(drb)s +(dsetup)f(Utilit)m(y)h(b)s(e\034ndet.)1831 5622 y(40)p +eop +%%Page: 41 43 +41 42 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fp(Als)29 b(K)m(on)m(trast)j(dazu)e(sei)f(das)h(n)m(b)s(d-clien)m(t)i +(Utilit)m(y)e(v)m(on)g(NBD)2506 506 y Fg(1)2575 539 y +Fp(erw)m(\344hn)m(t.)42 b(Nb)s(d-clien)m(t)382 652 y(baut)21 +b(die)g(TCP/IP-V)-8 b(erbindung)24 b(zum)d(Serv)m(er,)i(der)e(im)g(F)-8 +b(alle)21 b(v)m(on)g(NBD)f(eb)s(enfalls)g(ein)382 764 +y(normales)j(An)m(w)m(endungsprogramm)j(ist,)e(auf)f(und)g(\374b)s +(ergibt)g(die)g(fertige)g(V)-8 b(erbindung)382 877 y(an)30 +b(den)h(Kernel-Co)s(de.)382 1040 y(Da)49 b(drb)s(dsetup)h(n)m(ur)g +(Information)g(w)m(eitergibt,)56 b(wird)50 b(es)f(einfac)m(her)i(sein,) +j(Ro)s(ot-)382 1153 y(Filesystem-Un)m(terst\374tzung)29 +b(in)f(DRBD)f(zu)h(implemen)m(tieren,)j(w)m(enn)e(DRBD)d(in)i(den)382 +1266 y(Lin)m(ux-Kernel)33 b(eingebunden)f(wird.)382 1429 +y(Daneb)s(en)h(gibt)h(es)e(no)s(c)m(h)i(Shell-Skripts,)g(die)g(die)f +(In)m(tegration)h(v)m(on)g(DRBD)e(mit)h(der)382 1542 +y(Cluster-Managemen)m(t-Soft)m(w)m(are)25 b(Heartb)s(eat)c(erm\366glic) +m(hen,)k(so)m(wie)c(eine)g(Benc)m(hmark-)382 1654 y(Applik)-5 +b(ation.)382 1991 y Fj(5.2)130 b(Kernel-Mo)t(dul)382 +2243 y Fp(Als)23 b(T)-8 b(reib)s(er)24 b(m)m(u\377)h(DRBD)d +(nat\374rlic)m(h)k(eine)e(Instanz)f(der)h(\034le_op)s(erations)h(im)e +(System)382 2356 y(registrieren,)40 b(und)d(DRBD)f(m)m(u\377)i(eine)f +(do_request)g(Prozedur)i(dem)e(Bu\033er-Cac)m(he)382 +2469 y(zur)k(V)-8 b(erf\374gung)42 b(stellen.)73 b(W)-8 +b(eiters)41 b(registriert)h(DRBD)e(einen)i(neuen)g(Ein)m(trag)g(im)382 +2582 y(/pro)s(c)25 b(Filesystem,)i(\374b)s(er)e(den)h(sic)m(h)g(der)f +(A)m(dministrator)i(ein)f(Bild)g(\374b)s(er)f(die)h(in)m(ternen)382 +2695 y(Zust\344nde)31 b(der)g(DRBD-Ger\344te)f(v)m(ersc)m(ha\033en)i(k) +-5 b(ann.)382 2988 y Fo(5.2.1)112 b(Bu\033er-Cac)m(he)382 +3210 y Fp(W)-8 b(enn)35 b(der)g(Bu\033er-Cac)m(he)i(Anforderungen)f +(durc)m(h)f(einen)h(Aufruf)e(der)h(do_request)382 3323 +y(Prozedur)i(\374b)s(ergibt,)g(m)m(\374ssen)f(diese)f(m\366glic)m(hst)i +(sc)m(hnell)f(erf\374llt)f(w)m(erden.)57 b(Handelt)382 +3435 y(es)43 b(sic)m(h)i(um)f(eine)g(Au\033orderung)h(zum)f(Lesen)h +(eines)e(Blo)s(c)m(k)m(es,)48 b(m)m(u\377)d(DRBD)e(den)382 +3548 y(Daten)m(transfer)30 b(v)m(on)f(der)h(zugrundeliegenden)h(F)-8 +b(estplatte)30 b(durc)m(hf\374hren.)42 b(Dies)29 b(wird)382 +3661 y(mit)g(Hilfe)g(einer)g(temp)s(or\344ren)h(K)m(opie)h(des)d +(bu\033er_heads)i(erledigt.)41 b(Diese)29 b(Metho)s(de)382 +3774 y(wird)i(auc)m(h)g(b)s(eim)g(ext3)f(Dateisystem)h(v)m(erw)m +(endet.)42 b([T)-8 b(w)m(e98)r(])382 3937 y(Durc)m(h)31 +b(dieses)g(V)-8 b(erhalten)31 b(b)s(e\034nden)g(sind)g(immer)g(n)m(ur)g +(Bl\366)s(c)m(k)m(e)g(des)g(DRBD-Ger\344tes)382 4050 +y(im)48 b(Bu\033er-Cac)m(he,)54 b(Bl\366)s(c)m(k)m(e)48 +b(des)f(ph)m(ysisc)m(hen)i(F)-8 b(estplattenger\344tes)50 +b(liegen)e(nie)g(im)382 4163 y(Bu\033er-Cac)m(he.)382 +4325 y(Bei)41 b(der)g(V)-8 b(erarb)s(eitung)42 b(einer)g(Sc)m +(hreibanforderung)i(m)m(u\377)d(der)h(Daten)m(blo)s(c)m(k)g(aller-)382 +4438 y(dings)23 b(auc)m(h)h(\374b)s(er)f(das)g(Netzw)m(erk)h(v)m +(ersendet)g(w)m(erden.)39 b(Da)23 b(die)g(do_request\(\))h(Proze-)382 +4551 y(dur)f(immer)h(im)g(K)m(on)m(text)g(eines)g(Prozesses)f +(aufgerufen)2297 4518 y Fg(2)2360 4551 y Fp(wird)h(\(vgl.)38 +b(Absc)m(hnitt)24 b(4.3.1)382 4664 y(auf)i(Seite)i(35\),)f(ist)g(das)f +(V)-8 b(ersenden)28 b(des)e(Datenpak)m(etes)i(\374b)s(er)f(die)g(TCP-V) +-8 b(erbindung)382 4777 y(ohne)41 b(w)m(eiteres)h(m\366glic)m(h.)73 +b(Sollte)41 b(der)g(Pu\033ersp)s(eic)m(her)h(des)f(So)s(c)m(k)m(ets)g +(v)m(oll)g(w)m(erden,)382 4890 y(blo)s(c)m(kiert)33 b(der)g(Aufruf)f(v) +m(on)h(so)s(c)m(k_sendmsg\(\),)h(und)f(der)g(Proze\377,)h(der)f(die)g +(Sc)m(hreib-)382 5003 y(op)s(eration)42 b(v)m(erursac)m(h)m(t)h(hat,)h +(wird)e(blo)s(c)m(kiert.)74 b(Diese)41 b(Eigensc)m(haft)h(ist)f(auc)m +(h)h(sehr)p 382 5064 1196 4 v 486 5118 a Ff(1)520 5150 +y Fe(Net)n(w)n(ork)25 b(blo)r(c)n(k)h(device,)g(h)n(ttp://atrey)-6 +b(.k)l(arlin.m\033.cuni.cz/\003pa)n(v)n(el/n)n(b)r(d/n)n(b)r(d.h)n(tml) +486 5209 y Ff(2)520 5241 y Fe(En)n(t)n(w)n(eder)37 b(im)g(K)n(on)n +(text)f(eines)h(Prozesses,)43 b(der)37 b(eine)g(IO-Op)r(eration)g(durc) +n(hf\374hrt,)i(o)r(der)e(im)382 5333 y(K)n(on)n(text)24 +b(des)i(k\035ushd)e(o)r(der)i(kup)r(date)f(Kernel-Threads.)1831 +5622 y Fp(41)p eop +%%Page: 42 44 +42 43 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fp(hilfreic)m(h,)40 b(w)m(enn)f(das)e(Computersystem,)j(das)d(die)h +(Daten)m(bl\366)s(c)m(k)m(e)h(empf\344ngt,)h(lang-)382 +652 y(samer)d(ist)f(als)h(das)f(sendende)i(System,)g(da)f(in)f(diesem)i +(F)-8 b(all)37 b(eb)s(enfalls)f(der)h(Proze\377)382 764 +y(am)31 b(sendenden)g(System)g(so)f(lange)i(blo)s(c)m(kiert)f(wird,)g +(bis)g(das)f(empfangende)i(System)382 877 y(wieder)f(b)s(ereit)g(ist,)f +(Daten)h(en)m(tgegenzunehmen.)382 1162 y Fn(5.2.1.1)103 +b(Deadlo)s(c)m(k)382 1380 y Fp(Da)40 b(Lin)m(ux)i(eine)f(\034xe)f +(Anzahl)i(an)e(Ein)m(tr\344gen)j(f\374r)d(IO-Anforderungen)i(hat)f +(\(siehe)382 1493 y(4.2.2.2)26 b(auf)e(Seite)i(33\),)h(k)-5 +b(ann)25 b(es)f(zu)h(einem)h(Deadlo)s(c)m(k)f(k)m(ommen,)j(w)m(enn)e +(die)f(Request-)382 1606 y(Queue)31 b(k)m(eine)g(Sc)m +(hreibanforderungen)j(mehr)d(aufnehmen)h(k)-5 b(ann.)382 +1765 y(Kann)21 b(die)g(Request-Queue)f(k)m(eine)h(Sc)m +(hreibanforderungen)j(mehr)d(aufnehmen)3114 1732 y Fg(3)3155 +1765 y Fp(,)h(wird)382 1878 y(der)27 b(Proze\377,)i(dessen)d(Sc)m +(hreibanforderungen)31 b(nic)m(h)m(t)d(mehr)f(Platz)h(hab)s(en,)g +(einfac)m(h)g(so)382 1991 y(lange)43 b(in)f(den)h(Zustand)g(T)-8 +b(ASK_UNINTERR)m(UPTIBLE)44 b(gebrac)m(h)m(t,)j(bis)c(wieder)382 +2104 y(Ein)m(tr\344ge)28 b(frei)e(sind.)39 b(Dieses)25 +b(Sc)m(hema)i(funktioniert)g(mit)f(normalen)i(F)-8 b(estplatten)m +(trei-)382 2217 y(b)s(ern)30 b(ohne)h(Probleme.)382 2376 +y(W)-8 b(enn)41 b(n)m(un)h(alle)f(Ein)m(tr\344ge)i(mit)f(Sc)m +(hreibanforderungen)i(an)d(DRBD)f(b)s(elegt)h(sind,)382 +2489 y(wird)36 b(der)g(Proze\377,)i(der)d(v)m(ersuc)m(h)m(t,)k(die)c +(Anforderungen)i(abzuarb)s(eiten,)h(b)s(eim)e(V)-8 b(er-)382 +2602 y(suc)m(h,)40 b(eine)d(Sc)m(hreibanforderung)k(an)c(den)h(darun)m +(terliegenden)j(F)-8 b(estplatten)m(treib)s(er)382 2715 +y(zu)33 b(senden,)i(blo)s(c)m(kiert.)50 b(Da)33 b(ab)s(er)h(k)m(eine)g +(Sc)m(hreibanforderung)i(abgesc)m(hlossen)e(w)m(er-)382 +2828 y(den)c(k)-5 b(ann,)30 b(ist)g(der)g(Computer)h(derart)f(blo)s(c)m +(kiert,)h(da\377)f(er)g(auc)m(h)h(nic)m(h)m(t)g(mehr)g(herun-)382 +2941 y(tergefahren)h(w)m(erden)f(k)-5 b(ann.)382 3100 +y(Das)29 b(lo)s(op-blo)s(c)m(k-device,)j(das)d(sc)m(hon)i(sehr)e(lange) +i(Bestandteil)g(des)e(Kernels)h(ist,)g(hat)382 3213 y(im)43 +b(Grunde)h(dasselb)s(e)f(Problem.)80 b(Es)43 b(wurde)g(b)s(eim)g(lo)s +(op-blo)s(c)m(k-device)i(dadurc)m(h)382 3326 y(gel\366st,)33 +b(da\377)f(Sc)m(hreibanforderungen)k(des)31 b(lo)s(op-blo)s(c)m +(k-devices)i(und)g(des)e(NBDs)h(n)m(ur)382 3439 y(ein)41 +b(Drittel)h(der)f(Request-Queue)h(b)s(elegen)g(d\374rfen.)73 +b(Es)41 b(handelt)h(sic)m(h)f(um)h(einen)382 3552 y(Sonderfall,)31 +b(der)g(in)g(lin)m(ux/driv)m(ers/blo)s(c)m(k/ll_rw_blo)s(c)m(k.c)j +(fest)c(v)m(erank)m(ert)i(wurde.)382 3711 y(DRBD)40 b(ist)h(bis)g +(jetzt)g(als)g(Mo)s(dul)g(implemen)m(tiert,)47 b(da)41 +b(dies)g(die)h(Installation)g(w)m(e-)382 3824 y(sen)m(tlic)m(h)47 +b(v)m(ereinfac)m(h)m(t.)88 b(Daher)46 b(k)-5 b(ann)46 +b(DRBD)f(k)m(einen)h(eigenen)h(Sonderfall)g(in)e(li-)382 +3937 y(n)m(ux/driv)m(ers/blo)s(c)m(k/ll_rw_blo)s(c)m(k.c)38 +b(hab)s(en.)50 b(Ic)m(h)34 b(hab)s(e)g(mic)m(h)h(dazu)f(en)m(tsc)m +(hlossen,)382 4050 y(bis)40 b(auf)f(w)m(eiteres)j(die)e(Ma)5 +b(jor)40 b(Nummer)g(des)g(net)m(w)m(ork-blo)s(c)m(k-devices)j(zu)d(v)m +(erw)m(en-)382 4163 y(den.)59 b(Dadurc)m(h)38 b(k)m(\366nnen)f(Sc)m +(hreibanforderungen)j(an)c(DRBD)g(n)m(ur)h(ein)g(Drittel)g(der)382 +4276 y(Request-Queue)25 b(b)s(elegen,)h(und)e(es)g(k)-5 +b(ann)24 b(nic)m(h)m(t)i(zu)f(dem)f(erw)m(\344hn)m(ten)j(Deadlo)s(c)m +(k)e(k)m(om-)382 4389 y(men.)382 4548 y(Dadurc)m(h)33 +b(en)m(tsteh)m(t)h(der)e(Nac)m(h)m(teil,)j(da\377)d(NBD)f(und)i(DRBD)e +(nic)m(h)m(t)j(gleic)m(hzeitig)g(v)m(er-)382 4661 y(w)m(endet)46 +b(w)m(erden)g(k)m(\366nnen.)83 b(Der)45 b(V)-8 b(orteil)45 +b(liegt)g(in)g(einer)g(w)m(esen)m(tlic)m(h)i(einfac)m(heren)382 +4774 y(Installation,)31 b(da)g(die)f(Implemen)m(tierung)j(als)e(Mo)s +(dul)f(m\366glic)m(h)i(ist.)382 4933 y(Mit)40 b(Lin)m(ux)i(2.4)f(wird)g +(diese)g(Einsc)m(hr\344nkung)i(aufgehob)s(en)e(w)m(erden)h(k)m +(\366nnen,)j(w)m(eil)382 5046 y(dann)36 b(DRBD)f(seine)h(eigene)g +(Request-Queue)g(hab)s(en)g(k)-5 b(ann)35 b(und)h(die)g(V)-8 +b(erw)m(endung)382 5159 y(einer)31 b(eigenen)g(Ma)5 b(jor)30 +b(Nummer)i(wieder)f(m\366glic)m(h)h(ist.)p 382 5217 1196 +4 v 486 5271 a Ff(3)520 5302 y Fe(Nur)e(66)h(\045)f(der)h +(Request-Queue)d(k)n(\366nnen)h(mit)h(Sc)n(hreibanforderungen)g +(gef\374llt)h(w)n(erden,)h(das)382 5394 y(letzte)26 b(Drittel)g(steh)n +(t)f(immer)f(f\374r)i(Leseanforderungen)g(zur)g(V)-6 +b(erf\374gung.)1831 5622 y Fp(42)p eop +%%Page: 43 45 +43 44 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fo(5.2.2)112 b(Threads)382 755 y Fp(Am)34 b(Anfang)h(der)g(En)m(t)m +(wic)m(klung)j(wurde)d(v)m(orgesehen,)i(da\377)f(der)f(Empfang)g(v)m +(on)g(Da-)382 868 y(tenpak)m(eten)24 b(durc)m(h)f(einen)g(normalen)h +(Proze\377)g(im)e(Userspace)h(v)m(orgenommen)h(w)m(erden)382 +981 y(sollte.)40 b(Diese)29 b(V)-8 b(organgsw)m(eise)31 +b(h\344tte)f(neb)s(en)f(sc)m(hlec)m(h)m(terer)j(P)m(erformance)f(und)f +(k)m(om-)382 1094 y(plizierterer)i(A)m(dministration)g(v)m(or)f(allem)g +(mit)g(folgendem)g(Problem)h(zu)e(k)-5 b(\344mpfen:)680 +1274 y(Im)20 b(folgenden)i(wird)f(ein)f(Knoten)i(eines)e(Clusters)h(b)s +(estehend)g(aus)f(zw)m(ei)i(Com-)680 1387 y(putern)31 +b(b)s(etrac)m(h)m(tet.)764 1567 y(1.)46 b(Das)29 b(Ger\344t)h(des)g +(Knotens)g(b)s(e\034ndet)g(sic)m(h)g(im)g(prim\344ren)h(Zustand,)f(da-) +880 1680 y(her)43 b(k)-5 b(ann)43 b(eine)g(Applik)-5 +b(ation)43 b(auf)f(das)h(Blo)s(c)m(kger\344t)g(zugreifen.)78 +b(Bei)880 1793 y(der)40 b(Durc)m(hf\374hrung)h(v)m(on)f(Sc)m(hreib)s +(op)s(erationen)i(w)m(erden)e(K)m(opien)h(der)880 1906 +y(Bl\366)s(c)m(k)m(e)h(im)g(Bu\033er-Cac)m(he)h(gesp)s(eic)m(hert.)75 +b(Diese)41 b(Bl\366)s(c)m(k)m(e)h(tragen)g(die)880 2019 +y(Ma)5 b(jor)30 b(Num)m(b)s(er)h(des)f(DRBD-Ger\344tes.)764 +2160 y(2.)46 b(Der)39 b(Zustand)g(des)f(Clusters)g(wird)h(ge\344ndert,) +j(und)d(das)f(b)s(etrac)m(h)m(tete)880 2273 y(Blo)s(c)m(kger\344t)j +(wird)f(v)m(on)g(n)m(un)h(an)f(in)g(der)g(sekund\344ren)g(F)-8 +b(unktion)41 b(v)m(er-)880 2386 y(w)m(endet.)764 2527 +y(3.)46 b(Daten)m(bl\366)s(c)m(k)m(e)35 b(w)m(erden)g(v)m(om)e +(Proze\377)i(im)e(Userspace)g(empfangen)h(und)880 2640 +y(auf)g(die)h(dazugeh\366rige)h(F)-8 b(estplatte)36 b(gesc)m(hrieb)s +(en.)54 b(Dab)s(ei)34 b(w)m(erden)i(sie)880 2753 y(im)28 +b(Bu\033er-Cac)m(he)h(mit)f(der)g(Ma)5 b(jor)28 b(Num)m(b)s(er)g(des)f +(F)-8 b(estplatten)m(treib)s(ers)880 2866 y(gesp)s(eic)m(hert.)764 +3007 y(4.)46 b(Nun)f(wird)h(der)f(Cluster)h(wieder)g(in)g(den)f +(urspr\374nglic)m(hen)j(Zustand)880 3120 y(gebrac)m(h)m(t.)764 +3261 y(5.)e(Wird)21 b(n)m(un)g(v)m(om)h(DRBD-Ger\344t)e(gelesen,)k +(liefert)d(der)g(Bu\033er-Cac)m(he)h(die)880 3374 y(Bl\366)s(c)m(k)m(e) +35 b(aus)g(Punkt)g(1,)g(ob)m(w)m(ohl)i(sie)d(in)h(Punkt)g(3)f(durc)m(h) +i(neue)f(Bl\366)s(c)m(k)m(e)880 3487 y(\374b)s(ersc)m(hrieb)s(en)d +(wurden.)382 3770 y Fn(5.2.2.1)103 b(Empfang)382 3986 +y Fp(Um)45 b(nic)m(h)m(t)i(auf)d(dieses)h(Problem)i(zu)e(sto\377en,)k +(wurde)d(das)f(Empfangen)i(v)m(on)e(Da-)382 4099 y(ten)m(bl\366)s(c)m +(k)m(en)c(zu)f(einem)g(in)m(tegralen)h(Bestandteil)f(v)m(on)g(DRBD,)f +(der)g(im)h(Mo)s(dul)f(als)382 4212 y(Kernel-Thread)33 +b(implemen)m(tiert)g(ist.)382 4370 y(Dieser)21 b(Thread)h(w)m(artet)g +(in)f(so)s(c)m(k_recvmsg\(\),)i(bis)d(ein)h(neuer)h(Daten)m(blo)s(c)m +(k)g(v)m(om)f(Netz-)382 4483 y(w)m(erk)27 b(en)m(tgegengenommen)k(w)m +(erden)d(k)-5 b(ann.)40 b(Danac)m(h)28 b(wird)f(v)m(om)h(Bu\033er-Cac)m +(he)g(Puf-)382 4596 y(fersp)s(eic)m(her)e(f\374r)g(den)g(en)m(tsprec)m +(henden)j(Blo)s(c)m(k)c(angefordert,)j(und)f(die)f(Daten)g(w)m(erden) +382 4709 y(direkt)615 4676 y Fg(4)692 4709 y Fp(in)38 +b(diesem)g(Sp)s(eic)m(her)h(empfangen.)63 b(Bei)38 b(der)g(L\366sung)g +(mit)g(dem)g(Daemon-)382 4822 y(Proze\377)23 b(im)f(Userspace)g +(h\344tten)h(die)f(Daten)g(zuerst)g(in)g(den)h(A)m(dre\377raum)g(des)f +(Daemons)382 4935 y(k)m(opiert)j(w)m(erden)h(m)m(\374ssen,)g(um)f(dann) +g(v)m(on)g(dort)g(wiederum)h(in)e(den)h(Bu\033er-Cac)m(he)h(k)m(o-)382 +5047 y(piert)c(zu)f(w)m(erden.)39 b(Danac)m(h)23 b(wird)f(der)f(Befehl) +h(gegeb)s(en,)h(den)f(Blo)s(c)m(k)f(im)h(Bu\033er-Cac)m(he)382 +5160 y(auf)30 b(die)h(F)-8 b(estplatte)31 b(zu)g(sc)m(hreib)s(en.)p +382 5217 1196 4 v 486 5271 a Ff(4)520 5302 y Fe(W)-6 +b(enn)26 b(die)i(Netzw)n(erkk)l(arte)e(Daten)h(empf\344ngt,)h(w)n +(erden)f(diese)h(zuerst)f(im)g(Pu\033ersp)r(eic)n(her)h(des)382 +5394 y(So)r(c)n(k)n(ets)d(abgelegt)i(und)e(v)n(on)g(dort)g(dann)g(mit)g +(so)r(c)n(k_recvmsg\(\))g(k)n(opiert.)1831 5622 y Fp(43)p +eop +%%Page: 44 46 +44 45 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fp(Sollte)24 b(DRBD)f(einmal)i(erw)m(eitert)g(w)m(erden,)i(um)d(den)g +(Einsatz)g(v)m(on)g(GFS)f(\374b)s(er)h(DRBD)382 652 y(zu)41 +b(erm\366glic)m(hen,)46 b(so)40 b(m)m(u\377)i(un)m(ter)f(anderem)h +(hier)g(eine)f(\304nderung)g(v)m(orgenommen)382 764 y(w)m(erden.)h +(DRBD)28 b(m)m(\374\377te)j(b)s(eim)e(Empfang)i(v)m(on)f(Daten)m +(bl\366)s(c)m(k)m(en)h(direkt)f(auf)f(die)h(ph)m(y-)382 +877 y(sisc)m(he)21 b(F)-8 b(estplatte)22 b(sc)m(hreib)s(en)g(und)g +(d\374rfte)f(den)h(Blo)s(c)m(k)f(nic)m(h)m(t)h(zuerst)f(im)h +(Bu\033er-Cac)m(he)382 990 y(un)m(terbringen,)30 b(da)d(GFS)g(eb)s +(enfalls)g(auf)f(diese)h(Bl\366)s(c)m(k)m(e)h(des)e(Bu\033er-Cac)m(hes) +j(zugreifen)382 1103 y(w\374rde.)50 b(Ohne)33 b(diese)h(\304nderung)g +(w\374rde)g(auc)m(h)g(jeder)f(Daten)m(blo)s(c)m(k)i(endlos)f(hin)f(und) +382 1216 y(her)e(gesendet)g(w)m(erden.)382 1378 y(Der)45 +b(Thread)h(ist,)j(w)m(enn)e(das)e(DRBD-Ger\344t)g(mit)g(einem)h(P)m +(artnerger\344t)i(v)m(erbun-)382 1490 y(den)g(wurde,)53 +b(mit)48 b(dem)g(ps-K)m(ommando)i(sic)m(h)m(tbar)f(und)f(tr\344gt)g +(z.B.)g(den)g(Namen)382 1603 y(\022drb)s(dd_0\021,)36 +b(w)m(ob)s(ei)f(die)g(Zi\033er)f(immer)h(die)g(Minor)f(Num)m(b)s(er)h +(des)f(Ger\344tes)g(anzeigt,)382 1716 y(zu)c(dem)h(der)g(Thread)g +(geh\366rt.)382 2004 y Fn(5.2.2.2)103 b(Senden)382 2224 +y Fp(W\344hrend)41 b(das)e(Senden)i(der)g(Daten)f(im)g(K)m(on)m(text)i +(jenes)d(Prozesses)h(durc)m(hgef\374hrt)382 2337 y(wird,)27 +b(der)f(den)g(Aufruf)f(der)h(do_request\(\))h(Prozedur)g(v)m(erursac)m +(h)m(t)h(hat,)f(gibt)f(es)f(auc)m(h)382 2450 y(Ereignisse,)k(die)f(das) +g(Senden)h(eines)f(P)m(ak)m(etes)h(ausl\366sen,)g(die)f(allerdings)h +(nic)m(h)m(t)h(inner-)382 2563 y(halb)h(eines)f(Proze\377k)m(on)m +(textes)j(auftreten.)41 b(Beispiele:)518 2821 y Fd(\017)46 +b Fp(Der)e(T)-8 b(reib)s(er)44 b(der)g(F)-8 b(estplatte)44 +b(meldet,)k(da\377)43 b(eine)h(Sc)m(hreib)s(op)s(eration)i(abge-)609 +2933 y(sc)m(hlossen)37 b(ist.)59 b(W)-8 b(enn)37 b(n)m(un)g(dieser)g +(Blo)s(c)m(k)f(in)h(der)g(momen)m(tanen)i(Menge)e(f\374r)609 +3046 y(die)j(Bestimm)m(ung)h(der)e(W)-8 b(rite-Barriers)41 +b(en)m(thalten)g(ist,)h(so)d(m)m(u\377)h(ein)g(W)-8 b(rite-)609 +3159 y(Barrier-P)m(ak)m(et)33 b(gesendet)e(w)m(erden.)518 +3346 y Fd(\017)46 b Fp(Der)e(T)-8 b(reib)s(er)44 b(der)g(F)-8 +b(estplatte)44 b(meldet,)k(da\377)43 b(eine)h(Sc)m(hreib)s(op)s +(eration)i(abge-)609 3459 y(sc)m(hlossen)31 b(ist.)40 +b(W)-8 b(enn)30 b(dieser)h(Blo)s(c)m(k)f(v)m(on)g(einer)h(\334b)s +(ertragung)f(mit)h(Protok)m(oll)609 3571 y(C)j(\(o)s(der)g(dem)g +(Resync)m(hronisationsproze\377\))i(stamm)m(t,)f(m)m(u\377)g(ein)f(W)-8 +b(rite-A)m(c)m(k-)609 3684 y(P)m(ak)m(et)32 b(gesendet)f(w)m(erden.)382 +3942 y(F)-8 b(estplatten)m(treib)s(er)29 b(rufen)d(diesen)h(Callbac)m +(k,)i(\374b)s(er)d(den)h(sie)f(diese)g(Ereignisse)h(signa-)382 +4055 y(lisieren,)f(normalerw)m(eise)h(aus)e(einem)g(Bottom-Half)g(aus)g +(auf,)g(der)g(an)g(den)g(In)m(terrupt,)382 4168 y(den)31 +b(die)f(F)-8 b(estplatte)32 b(b)s(eim)e(Absc)m(hlu\377)h(der)g(Op)s +(eration)g(erzeugt,)g(gek)m(opp)s(elt)h(ist.)40 b(Ein)382 +4280 y(Bottom-Half)c(hat)g(k)m(einen)g(Proze\377k)m(on)m(text,)k(daher) +c(k)m(\366nnen)g(auc)m(h)h(k)m(eine)f(Prozedu-)382 4393 +y(ren,)31 b(die)f(ev)m(en)m(tuell)j(sc)m(hlafen,)e(aufgerufen)g(w)m +(erden.)382 4555 y(Um)25 b(die)g(not)m(w)m(endigen)j(P)m(ak)m(ete)e(do) +s(c)m(h)g(v)m(ersenden)f(zu)g(k)m(\366nnen,)j(gibt)d(es)f(einen)i(zw)m +(eiten)382 4668 y(Kernel-Thread.)44 b(Dieser)31 b(Thread)h(w)m(artet)g +(in)g(der)f(asender_w)m(ait)i(W)-8 b(ait-Queue,)33 b(bis)382 +4781 y(er)k(v)m(on)g(einem)h(Bottom-Half)g(aus)f(gew)m(ec)m(kt)h(wird.) +61 b(Um)37 b(w)m(elc)m(hes)i(Ereignis)e(es)g(sic)m(h)382 +4894 y(handelt)42 b(und)g(w)m(elc)m(he)h(Aktion)e(daher)h(zu)f(setzen)h +(ist,)h(stellt)f(dieser)f(Thread)h(\374b)s(er)382 5006 +y(V)-8 b(ariablen)37 b(fest,)f(die)f(mit)h(den)g(anderen)g(Programm)m +(teilen)j(gemeinsam)d(v)m(erw)m(endet)382 5119 y(w)m(erden.)382 +5281 y(Diese)26 b(Threads)h(sind)f(im)h(System)f(un)m(ter)h(der)g +(Bezeic)m(hn)m(ung)i(\022drb)s(d_asender_X\021)35 b(zu)382 +5394 y(\034nden,)c(w)m(ob)s(ei)g(das)g(X)e(eb)s(enfalls)i(die)f(Minor)h +(Nummer)g(des)f(Ger\344tes)h(wiedergibt.)1831 5622 y(44)p +eop +%%Page: 45 47 +45 46 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fn(5.2.2.3)103 b(Sync)m(hronisation)382 760 y Fp(F)-8 +b(alls)45 b(neb)s(en)f(der)h(automatisc)m(h)i(durc)m(hgef\374hrten)g +(Replik)-5 b(ation)45 b(der)f(Daten)m(bl\366)s(c)m(k)m(e)382 +873 y(eine)30 b(Sync)m(hronisation)h(wie)f(in)g(Absc)m(hnitt)g(3.4)g +(auf)g(Seite)g(26)f(b)s(esc)m(hrieb)s(en)i(durc)m(hge-)382 +986 y(f\374hrt)g(wird,)g(so)g(wird)g(dies)g(durc)m(h)h(einen)f(eigenen) +h(Kernel-Thread)h(erledigt.)43 b(Dieser)382 1099 y(Thread)26 +b(l\344uft)g(n)m(ur)g(w)m(\344hrend)i(des)d(Sync)m(hronisationsv)m +(organges)j(auf)e(jenem)f(Knoten,)382 1212 y(v)m(on)31 +b(dem)f(aus)h(die)f(Daten)h(v)m(ersendet)h(w)m(erden.)382 +1374 y(Bei)44 b(der)g(\374blic)m(hen)i(V)-8 b(organgsw)m(eise,)49 +b(um)44 b(Daten)h(v)m(on)f(einem)h(Blo)s(c)m(kger\344t)g(zu)f(b)s(e-) +382 1487 y(k)m(ommen,)37 b(wird)e(zuerst)g(der)g(Blo)s(c)m(k)g(v)m(om)g +(Bu\033er-Cac)m(he)i(angefordert)f(und)f(\026)g(falls)382 +1600 y(dieser)g(nic)m(h)m(t)h(aktuell)f(ist)g(\026)g(w)m(erden)h(die)f +(Daten)g(v)m(om)h(Ger\344t)f(mit)g(ll_rw_blo)s(c)m(k\(\))382 +1713 y(eingelesen.)382 1876 y(Eine)43 b(der)h(Anforderungen)g(an)f(den) +g(Sync)m(hronisationsmec)m(hanism)m(us)j(ist,)g(da\377)d(er)382 +1989 y(parallel)38 b(zum)f(Normalb)s(etrieb)i(laufen)e(m)m(u\377.)61 +b(Im)37 b(normalen)h(Betrieb)g(arb)s(eitet)f(al-)382 +2102 y(lerdings)d(ein)f(Dateisystem)g(aktiv)g(mit)g(dem)h(Bu\033er-Cac) +m(he.)50 b(Es)33 b(k)-5 b(ann)34 b(z.B.)f(Bl\366)s(c)m(k)m(e)382 +2215 y(anfordern,)j(sie)d(einlesen,)j(Mo)s(di\034k)-5 +b(ationen)34 b(durc)m(hf\374hren,)j(sie)c(freigeb)s(en)2972 +2182 y Fg(5)3046 2215 y Fp(o)s(der)h(ex-)382 2327 y(plizit)d(das)f +(Zur\374c)m(ksc)m(hreib)s(en)j(v)m(erlangen.)382 2490 +y(W\374rde)i(der)h(Kernel-Thread,)j(der)c(die)g(Sync)m(hronisation)j +(durc)m(hf\374hrt,)g(die)d(\374blic)m(he)382 2603 y(V)-8 +b(organgsw)m(eise)31 b(b)s(eim)e(Einlesen)h(v)m(on)g(Daten)f(an)m(w)m +(enden,)j(w\374rde)e(der)g(Bu\033er-Cac)m(he)382 2716 +y(einfac)m(h)35 b(die)f(A)m(dressen)g(der)g(Bl\366)s(c)m(k)m(e)g(im)g +(Sp)s(eic)m(her)h(auc)m(h)g(an)f(das)g(DRBD-Ger\344t)g(b)s(e-)382 +2829 y(k)-5 b(ann)m(tgeb)s(en,)28 b(und)d(es)g(k)m(\366nn)m(ten)i +(Daten)f(auf)f(die)h(gespiegelte)h(F)-8 b(estplatte)26 +b(gesc)m(hrieb)s(en)382 2942 y(w)m(erden,)32 b(die)f(das)f(Filesystem)g +(no)s(c)m(h)h(gar)g(nic)m(h)m(t)h(sc)m(hreib)s(en)f(will)2607 +2909 y Fg(6)2647 2942 y Fp(.)382 3105 y(Daher)i(m)m(u\377)h(der)f +(Bu\033er-Cac)m(he)i(b)s(eim)e(Einlesen)h(der)f(Daten)g(f\374r)g(die)g +(Sync)m(hronisa-)382 3217 y(tion)k(umgangen)i(w)m(erden.)62 +b(Dab)s(ei)37 b(wird,)j(\344hnlic)m(h)e(wie)g(in)f(5.2.1)g(mit)h(einem) +g(selbst)382 3330 y(erzeugten)32 b(bu\033er_head)f(gearb)s(eitet.)382 +3493 y(Die)c(Implemen)m(tierung)j(des)e(Bitfeldes)f(wurde)h(v)m(om)g +(Rest)f(durc)m(h)h(eine)g(Sprungtab)s(el-)382 3606 y(le)34 +b(k)m(omplett)h(getrenn)m(t.)53 b(Das)33 b(erm\366glic)m(h)m(t,)k +(da\377)e(das)e(Bitfeld)h(durc)m(h)h(andere)g(Imple-)382 +3719 y(men)m(tierungen)g(ersetzt)d(wird.)47 b(So)32 b(k)m(\366nn)m(te)i +(eine)e(Implemen)m(tierung,)k(die)c(mit)h(einem)382 3832 +y(Filesystem)24 b(in)m(tegriert)i(ist,)f(Informationen)g(aus)f(dem)h +(Filesystem)f(heranziehen,)j(um)382 3945 y(den)k(Sync)m(hronisationsv)m +(organg)i(b)s(esser)d(zu)g(steuern.)382 4238 y Fo(5.2.3)112 +b(Datenstrukturen)382 4459 y Fp(Wie)29 b(b)s(ereits)h(erw)m(\344hn)m +(t,)i(greifen)d(die)h(Threads)g(auf)g(einige)g(gemeinsame)h(Ressourcen) +382 4572 y(zu.)72 b(F\374r)41 b(Datenstrukturen)h(wurden)g(aussc)m +(hlie\377lic)m(h)h(Spinlo)s(c)m(ks)e(v)m(erw)m(endet.)74 +b(Da)382 4685 y(die)33 b(Zugri\033e)g(auf)f(diese)h(Datenstrukturen)h +(sehr)e(kurz)h(sind,)g(w)m(\344ren)h(Semaphore)g(zu)382 +4798 y(aufw)m(endig.)p 382 4860 1196 4 v 486 4913 a Ff(5)520 +4945 y Fe(Ein)i(Blo)r(c)n(k,)i(der)e(mo)r(di\034ziert)f(und)f +(freigegeb)r(en)j(wurde,)h(wird)e(sp\344ter)f(durc)n(h)g(k\035ushd)e(o) +r(der)382 5036 y(kup)r(date)25 b(zur\374c)n(kgesc)n(hrieb)r(en.)486 +5096 y Ff(6)520 5128 y Fe(Da)19 b(genau)h(dieser)g(F)-6 +b(ehler)19 b(v)n(om)g(Kernel-Thread)g(f\374r)g(die)h(Sync)n +(hronisation)f(des)h(Soft)n(w)n(are-Raid-)382 5219 y(Subsystems)26 +b(un)n(ter)h(Lin)n(ux)g(gemac)n(h)n(t)g(wird,)j(ist)e(momen)n(tan)e +(\(Lin)n(ux)h(2.2.x\))h(die)h(V)-6 b(erw)n(endung)26 +b(v)n(on)382 5310 y(JFSs)g(auf)g(Soft)n(w)n(are-Raid)g(un)n(ter)f(Lin)n +(ux)g(nic)n(h)n(t)g(m\366glic)n(h.)1831 5622 y Fp(45)p +eop +%%Page: 46 48 +46 47 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fn(transfer_log)45 b Fp(Im)40 b(transfer_log,)k(das)d(als)f +(Ringpu\033ersp)s(eic)m(her)i(organisiert)g(ist,)609 +652 y(w)m(erden)50 b(Referenzen)e(auf)f(die)i(gesendeten)g(Bl\366)s(c)m +(k)m(e)f(gesp)s(eic)m(hert.)94 b(Eb)s(enso)609 764 y(w)m(erden)42 +b(gesendete)f(write-barriers)i(im)d(transfer_log)i(abgelegt.)72 +b(Wird)40 b(ein)609 877 y(Best\344tigungspak)m(et)34 +b(f\374r)e(ein)h(W)-8 b(rite-Barrier-P)m(ak)m(et)36 b(empfangen,)e(k)m +(\366nnen)f(al-)609 990 y(le)j(Ein)m(tr\344ge)i(im)e(transfer_log,)i +(die)e(v)m(or)g(der)g(dazugeh\366rigen)i(W)-8 b(rite-Barrier)609 +1103 y(liegen,)31 b(freigegeb)s(en)f(w)m(erden.)41 b(Die)30 +b(Menge)f(f\374r)g(die)h(Bestimm)m(ung)h(der)f(W)-8 b(rite-)609 +1216 y(Barriers)28 b(sind)f(all)g(jene)g(Ein)m(tr\344ge,)j(die)e(nac)m +(h)g(der)f(j\374ngsten)h(W)-8 b(rite-Barrier)29 b(ins)609 +1329 y(transfer_log)i(eingetragen)i(wurden.)609 1442 +y(Auf)e(das)f(transfer_log)i(wird)g(somit)f(aus)g(der)g(do_request\(\)) +h(Prozedur,)h(v)m(om)609 1555 y(Empfangs-Thread,)27 b(v)m(om)c +(Sende-Thread)i(und)e(v)m(om)g(K)m(on)m(text)i(eines)e(Bottom-)609 +1668 y(Half)k(aus)g(zugegri\033en.)40 b(Um)27 b(auc)m(h)h(die)g(A)m +(tomizit\344t)g(gegen)m(\374b)s(er)h(dem)f(Bottom-)609 +1781 y(Half)k(gew)m(\344hrleisten)i(zu)e(k)m(\366nnen,)h(m)m(u\377)g +(ein)f(Spinlo)s(c)m(k)h(mit)f(den)g(_irqsa)m(v)m(e\(\))h(/)609 +1894 y(_irqrestore\(\))f(Op)s(erationen)f(eingesetzt)h(w)m(erden.)382 +2081 y Fn(ep)s(o)s(c)m(h_set)46 b Fp(Das)29 b(ep)s(o)s(c)m(h_set)i +(wird)f(b)s(eim)g(Empfang)h(v)m(on)g(Daten)m(bl\366)s(c)m(k)m(en)h(v)m +(erw)m(en-)609 2194 y(det,)d(um)f(dort)g(Referenzen)h(auf)e(die)h +(empfangenen)i(Bl\366)s(c)m(k)m(e)e(abzulegen.)41 b(Wird)609 +2307 y(ein)36 b(W)-8 b(rite-Barrier-P)m(ak)m(et)39 b(empfangen,)g(m)m +(u\377)d(auf)g(die)g(Beendigung)h(der)f(IO-)609 2420 +y(Op)s(erationen)22 b(aller)f(im)f(ep)s(o)s(c)m(h_set)h(en)m(thaltenen) +i(Bl\366)s(c)m(k)m(e)e(gew)m(artet,)j(das)c(ep)s(o)s(c)m(h_set)609 +2533 y(geleert)48 b(und)g(ansc)m(hlie\377end)h(die)e(Best\344tigung)h +(der)g(W)-8 b(rite-Barrier)49 b(an)e(den)609 2646 y(Absender)f +(zur\374c)m(kgesc)m(hic)m(kt)i(w)m(erden.)88 b(Der)46 +b(Sende-Thread)i(m)m(u\377)e(auf)g(das)609 2759 y(ep)s(o)s(c)m(h_set)31 +b(zugreifen,)g(um)f(festzustellen,)g(f\374r)g(w)m(elc)m(he)i(Bl\366)s +(c)m(k)m(e)e(eine)h(Sc)m(hreib-)609 2872 y(b)s(est\344tigung)g +(gesendet)g(w)m(erden)h(k)-5 b(ann.)609 2984 y(Das)45 +b(ep)s(o)s(c)m(h_set)h(m)m(u\377)h(daher)f(v)m(om)g(Empfangs-Thread)i +(und)e(v)m(om)g(Sende-)609 3097 y(Thread)41 b(v)m(erw)m(endet)h(w)m +(erden.)72 b(Ein)40 b(Spinlo)s(c)m(k)h(ist)f(f\374r)g(die)g(Sync)m +(hronisation)609 3210 y(der)31 b(Zugri\033e)g(ausreic)m(hend.)382 +3398 y Fn(sync_log)44 b Fp(Das)29 b(sync_log)g(ist)f(eb)s(enfalls)h +(eine)g(Datenstruktur,)h(die)f(auf)g(der)g(Emp-)609 3511 +y(f\344ngerseite)21 b(v)m(erw)m(endet)i(wird.)37 b(Da)21 +b(Daten)m(bl\366)s(c)m(k)m(e,)j(die)d(v)m(om)g(Sync)m(hronisations-)609 +3624 y(Thread)h(stammen,)h(nic)m(h)m(t)g(am)e(W)-8 b(rite-Barrier)22 +b(Protok)m(oll)h(teilnehmen,)h(w)m(erden)609 3737 y(Referenzen)29 +b(auf)g(diese)g(Bl\366)s(c)m(k)m(e)g(hier)g(gesp)s(eic)m(hert,)i(bis)d +(deren)i(Sc)m(hreibb)s(est\344ti-)609 3850 y(gung)h(an)g(den)f +(Absender)h(zur\374c)m(kgesc)m(hic)m(kt)i(w)m(erden)f(k)-5 +b(ann.)609 3962 y(Das)36 b(sync_log)g(wird)g(eb)s(enfalls)f(v)m(om)h +(Empfangs-Thread)i(und)e(v)m(om)h(Sende-)609 4075 y(Thread)32 +b(v)m(erw)m(endet,)g(daher)f(ist)f(ein)h(normaler)h(Spinlo)s(c)m(k)f +(ausreic)m(hend.)382 4263 y Fn(BitMap)46 b Fp(Das)29 +b(v)m(om)i(sc)m(hnellen)g(Sync)m(hronisationsmec)m(hanism)m(us)i(v)m +(erw)m(endete)f(Bit-)609 4376 y(feld)j(\(siehe)h(Punkt)f(3.4.1)h(auf)f +(Seite)h(26\))f(m)m(u\377)h(v)m(or)g(gleic)m(hzeitigen)i(Zugri\033en) +609 4489 y(aus)28 b(mehreren)h(Proze\377k)m(on)m(texten)h(gesc)m(h)m +(\374tzt)g(w)m(erden,)g(daher)e(wird)h(ein)f(Spin-)609 +4602 y(lo)s(c)m(k)j(v)m(erw)m(endet.)382 4789 y Fn +(need_to_issue_barrier)44 b Fp(V)-8 b(on)46 b(dieser)f(V)-8 +b(ariable)45 b(wird)h(n)m(ur)f(ein)g(einziges)g(Bit)609 +4902 y(v)m(erw)m(endet.)56 b(Ist)34 b(dieses)h(Bit)g(gesetzt,)i(wird)e +(v)m(or)g(dem)h(Senden)f(des)g(n\344c)m(hsten)609 5015 +y(Datenpak)m(etes)48 b(ein)f(W)-8 b(rite-Barrier-P)m(ak)m(et)51 +b(v)m(ersc)m(hic)m(kt.)91 b(Do)s(c)m(h)47 b(der)h(Sende-)609 +5128 y(Thread)j(v)m(ersuc)m(h)m(t)g(eb)s(enfalls,)j(w)m(enn)c(dieses)f +(Bit)h(gesetzt)f(ist,)54 b(das)c(W)-8 b(rite-)609 5241 +y(Barrier-P)m(ak)m(et)39 b(zu)e(v)m(ersc)m(hic)m(k)m(en.)61 +b(Im)36 b(Quellco)s(de)h(sind)g(diese)f(Read-Mo)s(dify-)609 +5354 y(W)-8 b(rite-Zugri\033e)39 b(auf)e(dieses)g(Bit)g(durc)m(h)h +(atomare)g(Op)s(erationen)h(ausgef\374hrt,)1831 5622 +y(46)p eop +%%Page: 47 49 +47 48 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 609 539 a +Fp(damit)28 b(ein)f(need_to_issue_barrier)j(Bit)d(nic)m(h)m(t)i(zw)m +(eimal)f(v)m(ersc)m(hic)m(kt)h(w)m(erden)609 652 y(k)-5 +b(ann.)609 764 y(Do)s(c)m(h)34 b(dies)f(ist)g(n)m(ur)h(mehr)g(zu)f +(Dokumen)m(tationszw)m(ec)m(k)m(en)k(im)d(Quelltext)g(v)m(or-)609 +877 y(handen,)d(denn)e(auf)g(das)g(Bit)g(darf)g(erst)g(nac)m(h)h +(Erhalt)g(der)f(send_m)m(utex)i(zuge-)609 990 y(gri\033en)23 +b(w)m(erden,)j(da)d(man)g(das)g(P)m(ak)m(et)h(so)m(wieso)g(senden)f(m)m +(u\377)g(und)h(diese)f(Aktion)609 1103 y(an)31 b(der)f(ric)m(h)m(tigen) +j(Stelle)e(im)g(transfer_log)g(eingetragen)h(w)m(erden)g(m)m(u\377.)382 +1282 y Fn(request.rq_status)46 b Fp(Da)31 b(b)s(ei)g(einer)g(Sc)m +(heibanforderung)k(auf)c(den)g(Absc)m(hlu\377)h(v)m(on)609 +1395 y(zw)m(ei)41 b(Op)s(erationen)g(gew)m(artet)h(w)m(erden)f(m)m +(u\377,)i(wird)e(im)f(Statusfeld)g(des)g(Re-)609 1508 +y(quests)g(festgehalten,)j(w)m(elc)m(he)f(Op)s(eration)f(b)s(ereits)f +(abgesc)m(hlossen)h(ist.)69 b(Die)609 1621 y(Prozedur,)49 +b(die)44 b(dieses)g(F)-8 b(eld)44 b(b)s(earb)s(eitet,)k(liest)c(zuerst) +g(den)g(W)-8 b(ert)44 b(ein)g(und)609 1734 y(sc)m(hreibt)26 +b(ihn)g(ansc)m(hlie\377end)h(zur\374c)m(k.)39 b(W)-8 +b(eil)26 b(es)e(zumindest)i(einen)g(F)-8 b(estplatten-)609 +1847 y(treib)s(er,)28 b(der)e(diese)g(Prozedur)h(\(\374b)s(er)f(den)h +(Callbac)m(k,)h(der)e(den)g(Absc)m(hlu\377)h(einer)609 +1960 y(IO-Op)s(eration)36 b(signalisiert,\))i(aus)d(dem)g(K)m(on)m +(text)i(eines)e(In)m(terrupts)h(aufruft,)609 2073 y(gibt,)28 +b(m)m(\374ssen)f(der)f(Lesezugri\033)h(und)g(der)g(Sc)m(hreibzugri\033) +h(mit)f(einem)g(Spinlo)s(c)m(k)609 2186 y(zusammengefa\377t)32 +b(w)m(erden.)382 2365 y Fn(So)s(c)m(k)m(et)46 b Fp(Da)d(aus)g(mehreren) +i(Proze\377k)m(on)m(texten)2115 2332 y Fg(7)2200 2365 +y Fp(und)f(dem)f(Sende-Thread)i(\374b)s(er)609 2478 y(den)37 +b(So)s(c)m(k)m(et)h(gesendet)f(wird,)j(m)m(u\377)d(die)g(Sendeop)s +(eration)i(mit)e(einem)h(Sema-)609 2591 y(phor)25 b(gesic)m(hert)g(w)m +(erden,)i(da)d(sonst)g(ein)h(zuf\344lliges)f(Gemisc)m(h)h(der)f(Daten)m +(bl\366)s(c)m(k)m(e)609 2704 y(en)m(tsteh)m(t.)609 2816 +y(Dieses)j(Semaphor,)i(mit)e(dem)g(Namen)g(send_m)m(utex,)i(stellt)e +(eb)s(enfalls)g(sic)m(her,)609 2929 y(da\377)34 b(die)g(Ein)m +(tragungen)i(in)e(das)f(transfer_log)h(in)g(genau)g(derselb)s(en)g +(Reihen-)609 3042 y(folge)d(erfolgen,)g(in)f(der)h(auc)m(h)g(die)g +(Daten)m(bl\366)s(c)m(k)m(e)i(v)m(ersendet)e(w)m(erden.)382 +3323 y Fo(5.2.4)112 b(Protok)m(oll)382 3536 y Fp(Da)25 +b(der)g(Lin)m(ux-Kernel)i(auf)d(einer)i(Vielzahl)f(v)m(on)g(Hardw)m +(areplattformen)j(l\344uft,)e(wur-)382 3649 y(de)40 b(v)m(om)h(Anfang)f +(an)g(darauf)h(geac)m(h)m(tet,)k(da\377)40 b(DRBD)g(so)g(implemen)m +(tiert)j(ist,)f(da\377)382 3762 y(DRBD-Ger\344te,)36 +b(die)f(auf)f(un)m(tersc)m(hiedlic)m(hen)k(Hardw)m(areplattformen)g +(laufen,)e(mit-)382 3875 y(einander)e(k)m(omm)m(unizieren)h(k)m +(\366nnen.)47 b(Daher)33 b(wird)g(f\374r)g(die)f(Daten)h(in)g(den)g(P)m +(ak)m(eten)382 3988 y(die)e(Big-Endian-Byteorder)i(v)m(erw)m(endet.)382 +4142 y(Allen)d(P)m(ak)m(eten)j(ist)d(folgender)h(Header)g(gemeinsam:) +609 4371 y Fc(typedef)47 b(struct)g({)609 4484 y(__u32)g(magic;)609 +4597 y(__u16)g(command;)609 4709 y(__u16)g(length;)609 +4822 y(})g(Drbd_Packet;)382 5051 y Fp(Die)21 b(v)m(erw)m(endeten)i +(Daten)m(t)m(yp)s(en)f(sind)e(in)h(den)g(Include-Dateien)h(v)m(on)f +(Lin)m(ux)h(de\034niert,)382 5164 y(w)m(ob)s(ei)31 b(u16)g(b)s +(edeutet,)g(da\377)g(es)f(sic)m(h)h(um)f(ein)h(unsigned)g(in)m(t)g(mit) +g(16)f(Bit)h(handelt.)p 382 5217 1196 4 v 486 5271 a +Ff(7)520 5302 y Fe(Es)21 b(k)n(\366nn)n(ten)d(b)r(eliebig)j(viele)g +(Prozesse)g(das)f(Blo)r(c)n(kger\344t)i(gleic)n(hzeit)f(\366\033nen,)g +(sc)n(hreib)r(en,)h(fsync\(2\))382 5394 y(o)r(der)k(fdatasync\(2\))g +(aufrufen.)1831 5622 y Fp(47)p eop +%%Page: 48 50 +48 49 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fn(magic)45 b Fp(Es)39 b(handelt)h(sic)m(h)g(dab)s(ei)f(um)h(eine)f(K)m +(onstan)m(te.)69 b(Auf)38 b(der)h(Empfangsseite)609 652 +y(wird)d(diese)f(Zahl)h(immer)g(auf)f(ihre)h(K)m(orrektheit)h(\374b)s +(erpr\374ft.)55 b(Ist)35 b(sie)g(einmal)609 764 y(nic)m(h)m(t)i(k)m +(orrekt)f(v)m(orhanden,)i(wird)e(da)m(v)m(on)h(ausgegangen,)h(da\377)e +(ein)g(F)-8 b(ehler)36 b(im)609 877 y(Programm)c(v)m(orliegt,)g(und)f +(die)f(V)-8 b(erbindung)32 b(wird)f(un)m(terbro)s(c)m(hen.)382 +1064 y Fn(command)44 b Fp(Dieses)33 b(F)-8 b(eld)34 b(dien)m(t)g(dazu,) +h(die)e(F)-8 b(unktion)34 b(der)g(folgenden)g(Daten,)h(also)609 +1177 y(den)27 b(T)m(yp)g(des)f(gesam)m(ten)h(P)m(ak)m(etes,)i +(festzulegen.)40 b(F)-8 b(olgende)28 b(W)-8 b(erte)27 +b(sind)f(m\366g-)609 1290 y(lic)m(h:)57 b(Data,)41 b(Barrier,)g(RecvA)m +(c)m(k,)f(W)-8 b(riteA)m(c)m(k,)42 b(BarrierA)m(c)m(k,)f(Rep)s(ortP)m +(arams,)609 1403 y(BlkSizeChanged)32 b(und)f(CStateChanged.)382 +1590 y Fn(length)45 b Fp(Gibt)31 b(die)g(L\344nge)g(des)f(Daten)m +(teils)i(des)e(P)m(ak)m(etes)i(an.)382 1878 y Fn(5.2.4.1)103 +b(Datenpak)m(et)609 2050 y Fc(typedef)47 b(struct)g({)609 +2163 y(__u64)g(block_nr;)609 2276 y(__u64)g(block_id;)609 +2389 y(})g(Drbd_Data_P;)382 2648 y Fp(Datenpak)m(ete)38 +b(b)s(einhalten)g(die)f(eigen)m(tlic)m(he)i(Nutzinformation.)61 +b(Die)37 b(Daten)g(selbst)382 2761 y(folgen)31 b(diesem)f(Header.)382 +3020 y Fn(blo)s(c)m(k_nr)44 b Fp(Die)30 b(Blo)s(c)m(kn)m(ummer)j(des)d +(Daten)m(blo)s(c)m(k)m(es.)382 3207 y Fn(blo)s(c)m(k_id)44 +b Fp(Mit)31 b(Hilfe)g(dieser)g(64)h(Bits)f(wird)g(einerseits)h(un)m +(tersc)m(hieden,)i(ob)d(es)g(sic)m(h)609 3319 y(um)f(einen)h(Daten)m +(blo)s(c)m(k,)g(der)f(am)g(W)-8 b(rite-Barrier-Protok)m(oll)34 +b(teilnimm)m(t,)d(o)s(der)609 3432 y(einen)k(Blo)s(c)m(k)f(des)g(Sync)m +(hronisationsprozesses)i(handelt.)52 b(Der)34 b(Inhalt)h(dieses)609 +3545 y(F)-8 b(eldes)28 b(wird)g(auc)m(h)h(b)s(ei)e(einem)h +(Best\344tigungspak)m(et)h(wieder)g(zur\374c)m(kgesc)m(hic)m(kt.)609 +3658 y(Bei)42 b(Protok)m(oll)i(C)d(legt)i(hier)f(der)g(sendende)h +(Knoten)f(die)h(A)m(dresse)e(der)i(IO-)609 3771 y(Au\033orderung)38 +b(ab.)61 b(Dadurc)m(h)38 b(k)-5 b(ann)37 b(b)s(eim)g(Empfang)h(des)f +(zugeh\366rigen)h(Be-)609 3884 y(st\344tigungspak)m(etes,)32 +b(das)f(dieses)f(F)-8 b(eld)31 b(eb)s(enfalls)g(hat,)g(der)f(Absc)m +(hlu\377)i(der)f(IO-)609 3997 y(Au\033orderung)h(sc)m(hneller)f(durc)m +(hgef\374hrt)i(w)m(erden.)382 4286 y Fn(5.2.4.2)103 b(W)-9 +b(rite-Barrier-P)m(ak)m(et)609 4457 y Fc(typedef)47 b(struct)g({)609 +4570 y(__u32)g(barrier;)609 4683 y(__u32)g(_fill;)609 +4796 y(})g(Drbd_Barrier_P;)382 5055 y Fp(\334b)s(er)30 +b(dieses)h(P)m(ak)m(et)h(darf)f(k)m(ein)g(Daten)m(blo)s(c)m(k)h(v)m +(ersc)m(hob)s(en)g(w)m(erden.)43 b(Auf)30 b(dem)h(Netz-)382 +5168 y(w)m(erk)24 b(ist)f(dies)g(ohnehin)i(nic)m(h)m(t)f(m\366glic)m +(h,)j(da)c(TCP)i(die)e(Datenpak)m(ete)i(in)f(der)f(ric)m(h)m(tigen)382 +5281 y(Reihenfolge)h(\374b)s(ertr\344gt.)39 b(Do)s(c)m(h)24 +b(im)g(Bu\033er-Cac)m(he)h(m)m(u\377)f(dies)g(erst)f(mit)h(en)m(tsprec) +m(hen-)382 5394 y(den)31 b(Ma\377nahmen)g(sic)m(hergestellt)h(w)m +(erden.)1831 5622 y(48)p eop +%%Page: 49 51 +49 50 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fn(barrier)44 b Fp(Hierb)s(ei)32 b(handelt)g(es)f(sic)m(h)h(um)f(eine)h +(Nummer)g(zur)g(Iden)m(ti\034zierung)h(dieser)609 652 +y(W)-8 b(rite-Barrier.)74 b(Sie)41 b(ist)f(f\374r)h(die)g(prinzipielle) +i(F)-8 b(unktion)41 b(nic)m(h)m(t)i(not)m(w)m(endig,)609 +764 y(wird)29 b(ab)s(er)f(denno)s(c)m(h)i(v)m(erw)m(endet,)g(um)f(die)g +(k)m(orrekte)f(F)-8 b(unktion)30 b(des)e(Protok)m(oll)609 +877 y(st\344ndig)j(\374b)s(erpr\374fen)g(zu)g(k)m(\366nnen.)382 +1051 y Fn(_\034ll)45 b Fp(Da)21 b(gcc)g(auf)g(64-Bit-Plattformen)j(die) +d(Gr\366\377e)h(des)f(Daten)m(t)m(yp)s(es)h(auf)f(ein)h(Vielfa-)609 +1164 y(c)m(hes)k(v)m(on)f(8)g(Byte)g(au\033\374llt,)i(ist)d(dieses)h(F) +-8 b(eld)26 b(not)m(w)m(endig,)j(damit)d(der)f(Daten)m(t)m(yp)609 +1277 y(auc)m(h)32 b(auf)e(32-Bit-Plattformen)j(die)d(gleic)m(he)i +(Gr\366\377e)f(hat.)382 1546 y Fn(5.2.4.3)103 b(P)m(arameterpak)m(et) +609 1718 y Fc(typedef)47 b(struct)g({)609 1831 y(__u64)g(size;)609 +1944 y(__u32)g(state;)609 2057 y(__u32)g(blksize;)609 +2170 y(__u32)g(protocol;)609 2282 y(__u32)g(version;)609 +2395 y(})g(Drbd_Parameter_P;)382 2602 y Fp(Dieses)29 +b(P)m(ak)m(et)i(wird)f(b)s(ei)f(den)h(K)m(ommandos)h(Rep)s(ortP)m +(arams)g(und)f(BlkSizeChanged)382 2715 y(gesendet.)41 +b(Es)29 b(wird)h(unmittelbar)h(nac)m(h)f(einem)g(erfolgreic)m(hen)h(V) +-8 b(erbindungsaufbau)382 2828 y(ausgetausc)m(h)m(t.)50 +b(Stimmen)34 b(das)f(Protok)m(oll)h(o)s(der)f(die)g(V)-8 +b(ersion)34 b(der)f(b)s(eiden)g(K)m(omm)m(u-)382 2941 +y(nik)-5 b(ationspartner)32 b(nic)m(h)m(t)g(\374b)s(erein,)f(wird)g +(die)g(V)-8 b(erbindung)32 b(sofort)e(un)m(terbro)s(c)m(hen.)382 +3148 y Fn(size)46 b Fp(In)30 b(diesem)h(F)-8 b(eld)31 +b(wird)g(die)f(Gr\366\377e)h(der)g(lok)-5 b(alen)31 b(F)-8 +b(estplatte)31 b(\374b)s(ermittelt.)382 3321 y Fn(state)47 +b Fp(Hier)30 b(wird)h(der)g(Zustand)g(des)f(DRBD-Ger\344tes)g(\374b)s +(ermittelt,)i(en)m(t)m(w)m(eder)h(pri-)609 3434 y(m\344r)f(o)s(der)g +(sekund\344r.)45 b(T)-8 b(re\033en)33 b(zw)m(ei)g(DRBD-Ger\344te,)f +(die)g(sic)m(h)g(im)g(prim\344ren)609 3547 y(Zustand)f(b)s(e\034nden,)g +(aufeinander,)h(wird)f(die)g(V)-8 b(erbindung)32 b(un)m(terbro)s(c)m +(hen.)382 3721 y Fn(blksize)45 b Fp(Die)31 b(momen)m(tane)h(Blo)s(c)m +(kgr\366\377e.)382 3895 y Fn(proto)s(col)45 b Fp(Das)35 +b(Protok)m(oll,)j(mit)e(dem)f(dieses)h(DRBD-Ger\344t)f(die)h(V)-8 +b(erbindung)37 b(b)s(e-)609 4008 y(treib)s(en)31 b(will.)382 +4181 y Fn(v)m(ersion)45 b Fp(Die)30 b(V)-8 b(ersion)31 +b(der)g(DRBD-Implemen)m(tierung.)382 4451 y Fn(5.2.4.4)103 +b(Best\344tigungspak)m(et)609 4622 y Fc(typedef)47 b(struct)g({)609 +4735 y(__u64)g(block_nr;)609 4848 y(__u64)g(block_id;)609 +4961 y(})g(Drbd_BlockAck_P;)382 5168 y Fp(Dieses)39 b(P)m(ak)m(et)h +(wird)g(mit)f(dem)h(K)m(ommando)h(RecvA)m(c)m(k)f(im)f(Protok)m(oll)i +(B)e(und)g(mit)382 5281 y(W)-8 b(riteA)m(c)m(k)35 b(im)f(Protok)m(oll)i +(C)e(v)m(erw)m(endet.)53 b(Die)34 b(b)s(eiden)h(Datenfelder)g(w)m +(erden)g(dab)s(ei)382 5394 y(aus)30 b(dem)h(Datenpak)m(et,)h(auf)e(das) +g(sic)m(h)h(diese)g(Best\344tigung)g(b)s(ezieh)m(t,)h(\374b)s +(ernommen.)1831 5622 y(49)p eop +%%Page: 50 52 +50 51 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fn(5.2.4.5)103 b(W)-9 b(rite-Barrier-Best\344tigungspak)m(et)609 +710 y Fc(typedef)47 b(struct)g({)609 823 y(__u32)g(barrier;)609 +936 y(__u32)g(set_size;)609 1049 y(})g(Drbd_BarrierAck_P;)382 +1311 y Fp(W)-8 b(enn)35 b(alle)f(Bl\366)s(c)m(k)m(e,)i(die)e(v)m(or)g +(einer)h(W)-8 b(rite-Barrier)36 b(empfangen)f(wurden,)h(auc)m(h)f(ge-) +382 1424 y(sc)m(hrieb)s(en)k(sind,)i(wird)e(dieses)f(P)m(ak)m(et)i(v)m +(ersendet.)65 b(Beide)39 b(Datenfelder)g(dieses)f(P)m(a-)382 +1537 y(k)m(etes)i(tragen)h(nic)m(h)m(t)h(zur)e(prinzipiellen)i(F)-8 +b(unktion)41 b(b)s(ei,)i(w)m(erden)e(ab)s(er)f(f\374r)g(in)m(terne)382 +1650 y(K)m(onsistenz\374b)s(erpr\374fungen)33 b(v)m(erw)m(endet.)382 +1912 y Fn(barrier)44 b Fp(Die)22 b(Nummer,)i(die)e(b)s(eim)f(Erzeugen)i +(dieser)f(W)-8 b(rite-Barrier)23 b(generiert)g(wur-)609 +2025 y(de.)382 2213 y Fn(set_size)46 b Fp(Gibt)24 b(an,)h(wie)f(viele)g +(Bl\366)s(c)m(k)m(e)g(v)m(or)g(dieser)g(W)-8 b(rite-Barrier)25 +b(empfangen)g(wur-)609 2326 y(den.)382 2616 y Fn(5.2.4.6)103 +b(C-Zustandspak)m(et)609 2787 y Fc(typedef)47 b(struct)g({)609 +2900 y(__u32)g(cstate;)609 3013 y(})g(Drbd_CState_P;)382 +3275 y Fp(Die)25 b(einzige)g(V)-8 b(erw)m(endung)27 b(dieses)e(P)m(ak)m +(etes)h(b)s(esteh)m(t)f(darin,)i(dem)e(K)m(omm)m(unik)-5 +b(ations-)382 3388 y(partner)33 b(den)f(Anfang)g(und)g(das)g(Ende)h +(des)e(Sync)m(hronisationsv)m(organges)k(mitzutei-)382 +3501 y(len.)382 3763 y Fn(cstate)47 b Fp(F)-8 b(olgende)32 +b(W)-8 b(erte)31 b(sind)g(m\366glic)m(h:)609 3976 y Fn(SyncingAll)45 +b Fp(Jetzt)31 b(w)m(erden)h(alle)e(Bl\366)s(c)m(k)m(e)h(k)m(opiert.)609 +4122 y Fn(SyncingQuic)m(k)44 b Fp(Jetzt)31 b(b)s(eginn)m(t)h(ein)e(sc)m +(hneller)i(Sync)m(hronisationsv)m(organg.)609 4268 y +Fn(Connected)46 b Fp(Der)31 b(Sync)m(hronisationsv)m(organg)i(ist)d(b)s +(eendet.)382 4558 y Fn(5.2.4.7)103 b(Timeouts)382 4779 +y Fp(Da)25 b(aus)g(dem)h(K)m(on)m(text)g(eines)g(sc)m(hreib)s(enden)g +(Prozesses)g(gesendet)g(wird,)g(wird)g(dieser)382 4892 +y(blo)s(c)m(kiert,)33 b(falls)f(das)g(Senden)h(\374b)s(er)f(den)g(So)s +(c)m(k)m(et)h(blo)s(c)m(kiert.)46 b(Dieser)32 b(F)-8 +b(all)33 b(tritt)f(auc)m(h)382 5005 y(dann)44 b(ein,)i(w)m(enn)e(das)f +(Netzw)m(erk)h(zwisc)m(hen)h(den)e(v)m(erbundenen)i(DRBD-Ger\344ten)382 +5118 y(un)m(terbro)s(c)m(hen)33 b(wurde.)382 5281 y(Damit)21 +b(eine)h(Applik)-5 b(ation)22 b(nic)m(h)m(t)g(angehalten)h(wird,)g +(gibt)f(es)e(eine)i(ob)s(ere)f(Sc)m(hrank)m(e)i(f\374r)382 +5394 y(die)g(Dauer)g(der)g(Sendeop)s(eration.)40 b(V)-8 +b(or)23 b(dem)g(Aufruf)f(v)m(on)h(so)s(c)m(k_sendmsg\(\))g(wird)g(ein) +1831 5622 y(50)p eop +%%Page: 51 53 +51 52 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)495 +b(5.2.)71 b(KERNEL-MODUL)p 382 299 2989 4 v 382 539 a +Fp(Timer)30 b(gestartet.)41 b(L\344uft)30 b(dieser)g(Timer)h(ab)f(b)s +(ev)m(or)f(so)s(c)m(k_sendmsg\(\))i(zur\374c)m(kk)m(ehrt,)382 +652 y(wird)37 b(der)g(Systemruf)g(mit)g(Hilfe)f(eines)h(Signals)h +(abgebro)s(c)m(hen.)61 b(Der)37 b(Proze\377)h(sieh)m(t)382 +764 y(dieses)30 b(Signal)h(nic)m(h)m(t,)h(da)f(es)f(no)s(c)m(h)h +(innerhalb)h(des)e(T)-8 b(reib)s(ers)31 b(wieder)g(gel\366sc)m(h)m(t)h +(wird.)382 916 y(W)-8 b(enn)31 b(ein)g(Timeout)h(aufgetreten)f(ist,)g +(wird)g(der)f(So)s(c)m(k)m(et)i(gesc)m(hlossen,)f(und)g(DRBD)382 +1029 y(setzt)c(den)g(Betrieb)g(im)g(nic)m(h)m(t)h(v)m(erbundenen)h +(Zustand)e(fort.)40 b(Alle)26 b(w)m(eiteren)j(Sc)m(hreib-)382 +1142 y(op)s(erationen)j(w)m(erden)f(im)g(Bitfeld)g(f\374r)f(sp\344tere) +h(Sync)m(hronisation)h(v)m(ermerkt.)382 1293 y(Im)i(F)-8 +b(alle)36 b(v)m(on)e(Protok)m(oll)j(B)d(und)h(C)f(m)m(u\377)i(auc)m(h)g +(f\374r)e(alle)h(im)f(transfer_log)i(en)m(thal-)382 1406 +y(tenen)41 b(Bl\366)s(c)m(k)m(e)g(der)f(Absc)m(hlu\377)h(der)g(IO-Op)s +(eration)g(signalisiert)g(w)m(erden,)j(da)c(nac)m(h)382 +1519 y(dem)c(Sc)m(hlie\377en)i(des)d(So)s(c)m(k)m(ets)h(k)m(eine)h +(Best\344tigungspak)m(ete)g(mehr)g(empfangen)f(w)m(er-)382 +1632 y(den)31 b(k)m(\366nnen.)382 1783 y(Eb)s(enfalls)c(n)m(ur)h +(f\374r)e(Protok)m(oll)j(B)d(und)i(C)f(m)m(u\377)h(die)f(Zeit,)h(die)f +(auf)g(das)f(Ein)m(tre\033en)j(v)m(on)382 1896 y(Best\344tigungspak)m +(eten)45 b(gew)m(artet)f(wird,)j(b)s(egrenzt)d(w)m(erden.)79 +b(Die)43 b(Not)m(w)m(endigk)m(eit)382 2009 y(daf\374r)30 +b(k)-5 b(ann)31 b(am)g(folgenden)g(Beispiel)g(erl\344utert)g(w)m +(erden:)633 2179 y(Die)39 b(Request-Queue)h(k)-5 b(ann)39 +b(k)m(eine)h(w)m(eiteren)h(Sc)m(hreibanforderungen)i(mehr)633 +2292 y(aufnehmen)37 b(und)g(blo)s(c)m(kiert)g(daher)g(alle)g(Prozesse,) +h(die)f(w)m(eitere)g(Sc)m(hreiban-)633 2405 y(forderungen)45 +b(erzeugen)h(w)m(ollen.)83 b(W\344hrend)45 b(n)m(un)g(auf)f(den)h(Absc) +m(hlu\377)g(der)633 2518 y(laufenden)c(IO-Op)s(erationen)g(gew)m(artet) +h(wird,)i(wird)c(das)g(Netzw)m(erk)h(un)m(ter-)633 2631 +y(bro)s(c)m(hen.)56 b(Da)36 b(allerdings)g(k)m(eine)g(neuen)g(IO-Op)s +(erationen)h(erzeugt)f(w)m(erden,)633 2744 y(wird)d(auc)m(h)g(nic)m(h)m +(ts)h(\374b)s(er)e(die)h(TCP-V)-8 b(erbindung)35 b(gesendet,)f(und)f +(die)g(Un)m(ter-)633 2857 y(brec)m(h)m(ung)27 b(der)e(V)-8 +b(erbindung)26 b(bleibt)f(unen)m(tdec)m(kt.)41 b(Das)24 +b(IO-Subsystem)h(bleibt)633 2970 y(allerdings)34 b(blo)s(c)m(kiert,)i +(da)e(die)g(Best\344tigungspak)m(ete,)i(die)e(die)g(aktuellen)h(IO-)633 +3083 y(Op)s(erationen)d(absc)m(hlie\377en)g(w\374rden,)f(nic)m(h)m(t)h +(mehr)f(ein)m(tre\033en)h(k)m(\366nnen.)382 3253 y(F\374r)25 +b(die)h(Implemen)m(tierung)h(des)e(Timeouts)h(b)s(eim)g(Senden)g(ist)f +(genau)h(ein)f(Timer)h(pro)382 3366 y(DRBD-Ger\344t)k(not)m(w)m(endig,) +j(da)e(immer)g(n)m(ur)g(genau)g(ein)g(Proze\377)h(senden)f(k)-5 +b(ann.)382 3517 y(Das)24 b(Timeout)i(f\374r)f(den)g(Empfang)h(v)m(on)f +(Best\344tigungspak)m(eten)i(wurde)f(eb)s(enfalls)e(mit)382 +3630 y(Hilfe)29 b(eines)h(einzigen)h(Timers)f(implemen)m(tiert.)43 +b(Dab)s(ei)30 b(wird)g(der)g(Timer)g(b)s(eim)g(Sen-)382 +3743 y(den)e(eines)g(Datenpak)m(etes)h(zur\374c)m(kgesetzt)g(und)f(ein) +g(Z\344hler)g(\(p)s(ending_cn)m(t\))i(erh\366h)m(t.)382 +3856 y(Wird)i(ein)f(Best\344tigungspak)m(et)j(empfangen,)f(wird)f(der)g +(Z\344hler)g(v)m(erringert)h(und)f(der)382 3969 y(Timer)c(eb)s(enfalls) +e(neu)h(gestartet)h(\(falls)f(der)g(Z\344hler)g(no)s(c)m(h)h(p)s +(ositiv)e(ist\).)39 b(Durc)m(h)28 b(diese)382 4082 y(Implemen)m +(tierung)k(k)-5 b(ann)30 b(zw)m(ar)h(eine)g(einzelne)g(Best\344tigung)g +(l\344nger)g(dauern)f(als)g(der)382 4195 y(W)-8 b(ert)29 +b(des)f(Timeouts,)i(ab)s(er)e(die)h(im)f(obigen)h(Beispiel)g(b)s(esc)m +(hrieb)s(ene)g(Situation)h(wird)382 4308 y(erk)-5 b(ann)m(t.)382 +4581 y Fn(5.2.4.8)103 b(Priorit\344ten)382 4791 y Fp(Im)40 +b(folgendem)i(w)m(erden)h(zw)m(ei)e(DRBD-Ger\344te-P)m(aare)i(auf)e +(einem)g(aus)g(zw)m(ei)h(Kno-)382 4904 y(ten)31 b(b)s(estehenden)i +(Cluster)e(b)s(etrac)m(h)m(tet,)j(b)s(ei)d(denen)h(die)g(prim\344ren)g +(Ger\344te)g(auf)f(den)382 5017 y(jew)m(eils)g(anderen)g(Knoten)h +(liegen)f(\(siehe)f(Abbildung)i(5.1\).)382 5168 y(K)m(omm)m(t)45 +b(es)e(b)s(ei)f(einer)i(solc)m(hen)g(K)m(on\034guration)i(dazu,)h +(da\377)c(das)g(Netzw)m(erk)h(lang-)382 5281 y(samer)39 +b(ist)f(als)g(die)h(F)-8 b(estplatten,)42 b(k)-5 b(ann)39 +b(es)f(zu)g(Timeouts)i(und)e(zum)h(Abbruc)m(h)h(der)382 +5394 y(V)-8 b(erbindung)32 b(k)m(ommen.)1831 5622 y(51)p +eop +%%Page: 52 54 +52 53 bop 382 262 a Fl(KAPITEL)31 b(5.)71 b(IMPLEMENTIER)m(UNG)681 +b(5.3.)71 b(DRBDSETUP)p 382 299 2989 4 v 472 1322 a @beginspecial +104 @llx 677 @lly 441 @urx 782 @ury 3370 @rwi @setspecial +%%BeginDocument: /home/philipp/diplomarbeit//sock_prio.ps +%!PS-Adobe-3.0 EPSF-3.0 +%%For: Philipp Reisner +%%CreationDate: Tue Apr 25 12:26:25 2000 +%%Title: sock_prio.ps +%%Creator: Sketch 0.6.5 +%%Pages: 1 +%%BoundingBox: 104 677 441 782 +%%Extensions: CMYK +%%DocumentSuppliedResources: (atend) +%%DocumentNeededResources: font Times-Roman +%%EndComments + +%%BeginProlog +%%BeginResource: procset Linux-Sketch-Procset 1.0 2 +/SketchDict 100 dict def +SketchDict begin +/bd { bind def } bind def +/x { exch } bd +/xd { exch def } bd +/PI 3.14159265358979323846264338327 def +/radgrad { 180 mul PI div } bd +/skstartmatrix matrix currentmatrix def +/tmpmat matrix def +/ISOLatin1Encoding dup where +{ pop pop } +{ [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period +/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon +/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J +/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i +/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve +/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek +/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen +/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu +/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex +/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve +/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute +/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute +/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute +/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde +/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def +} +ifelse +/arct dup where +{pop pop} +{ +/arct {arcto pop pop pop pop} bd +} +ifelse +/size 0 def +/fontname 0 def +/newfont 0 def +/sf { +/size xd +/fontname xd +fontname findfont +dup /Encoding get StandardEncoding eq +{ +dup +length dict /newfont xd +{ +1 index +/FID ne +{ newfont 3 1 roll put } +{ pop pop } +ifelse +} forall +newfont /Encoding ISOLatin1Encoding put +fontname newfont definefont +} +if +size scalefont setfont +} bd +/pusht {matrix currentmatrix} bd +/popt {setmatrix} bd +/pushc {gsave} bd +/popc {grestore} bd +/rgb {setrgbcolor} bd +/w { setlinewidth } bd +/j { setlinejoin } bd +/J { setlinecap } bd +/d { setdash } bd +/F { eofill } bd +/f { closepath F } bd +/S { +pusht +skstartmatrix setmatrix stroke +popt +} bd +/s { closepath S } bd +/m { moveto } bd +/l { lineto } bd +/c { curveto } bd +/txt { +/tmpmat tmpmat currentmatrix def +dup type /arraytype eq {concat} {translate} ifelse +0 0 m +tmpmat +} bd +/T {txt x show popt} bd +/P {txt x true charpath popt} bd +/TP {txt x dup show 0 0 m true charpath popt} bd +/C {newpath 0 360 arc} bd +/R { +2 copy m +x 2 index l +x 2 index x l +l +closepath +} bd +/ellipse { +dup type /arraytype eq +{ +pusht x concat +0 0 1.0 C +popt +} +{ +pusht 5 1 roll +4 -1 roll concat +newpath +dup 2 eq { +0 0 m +} if +3 1 roll +radgrad x +radgrad x +0 0 1 5 -2 roll +arc +0 ne { closepath } if +popt +} +ifelse +} bd +/radius1 0 def +/radius2 0 def +/factor 0 def +/rect { +dup type /arraytype eq +{ +pusht x concat +0 0 m 1 0 l 1 1 l 0 1 l closepath +popt +} +{ +/radius2 xd +/radius1 xd +pusht x concat +radius1 radius2 div 1 scale +0 radius2 m +0 1 radius2 1 radius2 arct +radius2 radius1 div +dup 1 1 index 0 radius2 arct +0 0 0 radius2 arct +0 0 0 1 radius2 arct +closepath +popt +} +ifelse +} bd +/buf 0 def +/width 0 def +/height 0 def +/skcimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width 3 mul string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +false 3 colorimage +tmpmat setmatrix +} bd +/skgimg { +/tmpmat tmpmat currentmatrix def +{ concat } if +/height xd +/width xd +/buf width string def +width height scale +width height 8 +[width 0 0 height neg 0 height] +{ currentfile buf readhexstring pop } bind +image +tmpmat setmatrix +} bd +/rclip { +4 2 roll m +dup 0 x rlineto +x 0 rlineto +neg 0 x rlineto +closepath +clip +} bd +/skeps { +10 dict begin +/sk_state save def +concat +3 index neg 3 index neg translate +rclip +0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash +newpath +/sk_dict_count countdictstack def +/sk_count count 1 sub def +userdict begin +/showpage { } def +/languagelevel where +{ +pop +languagelevel 1 ne +{ +false setstrokeadjust +false setoverprint +} if +} if +} bd +/skepsend { +count sk_count sub { pop } repeat +countdictstack sk_dict_count sub { end } repeat +sk_state restore +end +} bd +/gradidx 0 def +/gradient { +3 mul array +/gradidx 0 def +} bd +/$ { +3 index gradidx 5 -1 roll put +2 index gradidx 1 add 4 -1 roll put +1 index gradidx 2 add 3 -1 roll put +/gradidx gradidx 3 add def +} bd +/! { +3 +{ +dup dup gradidx dup 3 1 roll 3 sub get put +/gradidx gradidx 1 add def +} +repeat +} bd +/gradcolor { +3 mul dup 2 add 1 exch % idx 1 idx+2 +{ +1 index exch % array array i +get % array component +exch % component array +} +for +4 1 roll +} bd +/x0 0 def /y0 0 def /x1 0 def /y1 0 def +/left 0 def /right 0 def /top 0 def /bottom 0 def +/numcolors 0 def +/axial { +/y1 xd /x1 xd /y0 xd /x0 xd +dup length 3 idiv /numcolors xd +pusht exch % ctm array +x0 x1 ne y0 y1 ne or +{ +x0 y0 translate +[x1 x0 sub y1 y0 sub dup neg 2 index 0 0] concat +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +0 gradcolor rgb clippath f +0 1 numcolors 1 sub +{ +dup numcolors div +3 1 roll +gradcolor rgb +exch +bottom right top R f +} +for +} +if +pop +popt +} bd +/r0 0 def /r1 0 def /dr 0 def +/radial { +/r1 xd /r0 xd /y0 xd /x0 xd +/dr r1 r0 sub def +dup length 3 idiv /numcolors xd +pusht exch % ctm array +r0 r1 ne +{ +x0 y0 translate +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +newpath +dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb +clippath f +dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse +{ +dup numcolors div dr mul r0 add +3 1 roll +gradcolor rgb +exch +0 0 3 -1 roll C f +} +for +} +if +pop +popt +} bd +/max { +2 copy lt {exch} if pop +} bd +/conical { +pusht 5 1 roll +3 1 roll /y0 xd /x0 xd +x0 y0 translate +radgrad rotate +dup length 3 idiv /numcolors xd +clippath flattenpath pathbbox newpath +4 { abs 4 1 roll} repeat +3 { max } repeat +2 mul +dup scale +0 gradcolor rgb +0 0 1 0 360 arc f +1 1 numcolors 1 sub +{ +dup numcolors div 180 mul +3 1 roll +gradcolor rgb +exch +0 0 moveto +0 0 1 4 -1 roll dup neg arc +closepath f +} +for +pop +popt +} bd +/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def +/tileimage2 { +exch 4 2 roll +/height xd +/width xd +mark +/components 2 index +/PatternType 1 +/PaintType 1 +/TilingType 1 +/BBox [0 0 width height] +/XStep width +/YStep height +/PaintProc { +begin +XStep YStep 8 +matrix +imagedata +false +components +colorimage +end +} +counttomark 2 div cvi dup dict begin +{ def } repeat +pop currentdict end +dup +/imagedata +4 -1 roll +width height mul mul string +currentfile exch readhexstring pop +put +exch +makepattern +setpattern +clippath +eofill +} bd +/tileimage1 { +concat +/components xd +/height xd +/width xd +/imagedata +currentfile +width height mul components mul string +readhexstring pop +def +clippath flattenpath pathbbox +/top xd /right xd /bottom xd /left xd +left width div floor width mul +bottom height div floor height mul +translate +top bottom sub height div ceiling cvi +{ +gsave +right left sub width div ceiling cvi +{ +width height 8 matrix +components 1 eq +{ +{ imagedata } +image +} +{ +imagedata +false components +colorimage +} +ifelse +width 0 translate +} +repeat +grestore +0 height translate +} +repeat +} bd +/makepattern where +{ +pop +/tileimage /tileimage2 load def +} +{ +/tileimage /tileimage1 load def +} +ifelse +end +%%EndResource +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Roman + +10.433 setmiterlimit +%%EndSetup + +%%Page: 1 1 +SketchDict begin +newpath +306.259 705.827 m +306.259 697.323 l +314.763 701.575 l +306.259 705.827 l +closepath +0.843 0.808 1 rgb +F +[-76.5354 0 0 -2.83466 306.259 702.992] rect +F +newpath +238.227 720 m +238.227 711.496 l +229.723 715.748 l +238.227 720 l +closepath +F +[76.5354 0 0 -2.83466 238.227 717.165] rect +F +newpath +306.259 748.346 m +306.259 739.842 l +314.763 744.094 l +306.259 748.346 l +closepath +F +[-76.5354 0 0 -2.83466 306.259 745.512] rect +F +newpath +238.227 762.52 m +238.227 754.016 l +229.723 758.268 l +238.227 762.52 l +closepath +F +[76.5354 0 0 -2.83466 238.227 759.685] rect +F +[8.50394 0 0 -14.1732 314.763 722.835] rect +0.8 0.8 0.8 rgb +F +[8.50394 0 0 -14.1732 221.219 751.181] rect +F +[51.0236 0 0 -14.1732 314.763 765.354] rect +0.838 0.838 0.838 rgb +F +[51.0236 0 0 -14.1732 178.7 708.661] rect +F +/Times-Roman 11 sf +(IN) +157 754 0 0 0 rgb +T +(IN) +377 740 T +(IN) +157 711 T +(IN) +377 697 T +(OUT) +146 740 T +(OUT) +377 754 T +(OUT) +146 697 T +(OUT) +377 712 T +newpath +243.897 768.189 m +243.897 691.654 l +249.566 688.819 l +252.401 691.654 l +258.07 688.819 l +258.07 768.189 l +252.401 771.024 l +249.566 768.189 l +243.897 771.024 l +243.897 768.189 l +closepath +0.828 0.828 0.828 rgb +F +newpath +286.416 768.189 m +286.416 691.654 l +292.086 688.819 l +294.92 691.654 l +300.59 688.819 l +300.59 768.189 l +294.92 771.024 l +292.086 768.189 l +286.416 771.024 l +286.416 768.189 l +closepath +F +[56.6929 0 0 -14.1732 173.031 765.354] rect +0 0 0 rgb +1 w +0 j +0 J +[] 0 d +S +[56.6929 0 0 -14.1732 173.031 722.835] rect +S +[56.6929 0 0 -14.1732 173.031 708.661] rect +S +[56.6929 0 0 -14.1732 314.763 765.354] rect +S +[56.6929 0 0 -14.1732 314.763 751.181] rect +S +[56.6929 0 0 -14.1732 314.763 722.835] rect +S +[56.6929 0 0 -14.1732 314.763 708.661] rect +S +[56.6929 0 0 -14.1732 173.031 751.181] rect +S +newpath +229.723 701.575 m +248.149 701.575 l +250.983 704.409 l +250.983 727.087 l +253.818 729.921 l +0.992126 w +1 j +S +newpath +229.723 744.094 m +248.149 744.094 l +250.983 741.26 l +250.983 732.756 l +253.818 729.921 l +1 w +0 j +S +newpath +253.818 729.921 m +286.416 729.921 l +0.992126 w +S +pusht +286.416 729.921 translate +0 rotate +[ ] 0 d +-4 3 m +2 0 l +-4 -3 l +-4 3 l +F +popt +newpath +161.692 779.528 m +263.739 779.528 l +263.739 680.315 l +163.109 680.315 l +0.283465 w +[1.41733 0.283465 0.283465 0.283465 ] 0 d +S +newpath +382.794 779.528 m +280.747 779.528 l +280.747 680.315 l +381.377 680.315 l +S +/Times-Roman 12 sf +(drbd0) +107 754 T +(drbd0) +409 754 T +(drbd1) +107 711 T +(drbd1) +409 711 T +(\(SEC\)) +107 742 T +(\(PRI\)) +409 742 T +(\(PRI\)) +107 699 T +(\(SEC\)) +409 699 T +%%PageTrailer +showpage +%%Trailer +end +%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2 +%%EOF + +%%EndDocument + @endspecial 1047 1518 a Fp(Abbildung)31 b(5.1:)41 b(Zw)m(ei)31 +b(DRBD-Ger\344te-P)m(aare)382 1793 y(Bei)k(hoher)g(Last)g(ist)g(der)g +(Sendepu\033ersp)s(eic)m(her)i(des)e(So)s(c)m(k)m(ets)g(des)g +(Ger\344tes)g(im)g(pri-)382 1906 y(m\344ren)25 b(Zustand)h(normalerw)m +(eise)h(v)m(oll,)f(w)m(\344hrend)g(der)f(Sendepu\033ersp)s(eic)m(her)i +(des)d(Ge-)382 2019 y(r\344tes)37 b(im)f(sekund\344ren)h(Zustand)h(n)m +(ur)f(gering)g(gef\374llt)g(ist,)h(da)f(Best\344tigungspak)m(ete)382 +2132 y(w)m(esen)m(tlic)m(h)c(kleiner)e(sind)f(als)g(Datenpak)m(ete.)382 +2295 y(Das)39 b(Netzw)m(erksubsystem,)j(in)e(der)f(Abbildung)i(als)e +(grauer)h(v)m(ertik)-5 b(aler)40 b(abgerisse-)382 2408 +y(ner)k(Balk)m(en)g(dargestellt,)k(arb)s(eitet)c(normalerw)m(eise)i +(mit)e(einer)g(einfac)m(hen)h(FIF)m(O-)382 2521 y(Strategie.)d(Die)31 +b(b)s(eiden)f(DRBD-Ger\344te)h(auf)f(einem)i(Knoten)f(stehen)g(b)s(eim) +f(Senden)382 2633 y(in)e(einer)g(K)m(onkurrenzsituation.)43 +b(Das)27 b(prim\344re)i(Ger\344t)g(v)m(ersendet)f(w)m(esen)m(tlic)m(h)j +(mehr)382 2746 y(und)k(gr\366\377ere)h(P)m(ak)m(ete)g(als)f(das)f +(DRBD-Ger\344t)h(im)g(sekund\344ren)g(Zustand.)55 b(Die)34 +b(Be-)382 2859 y(st\344tigungspak)m(ete)42 b(des)e(sekund\344ren)g +(DRBD-Ger\344tes)g(w)m(erden)i(daher)f(v)m(om)f(Netz-)382 +2972 y(w)m(erksubsystem)31 b(l\344nger)g(v)m(erz\366gert.)382 +3135 y(Um)f(diesem)i(Problem)g(en)m(tgegenzu)m(wirk)m(en,)i(wird)e(in)e +(den)h(Ger\344ten)h(im)f(sekund\344ren)382 3248 y(Zustand)23 +b(das)g(TCP_NODELA)-8 b(Y)25 b(Flag)e(des)g(So)s(c)m(k)m(ets)h +(gesetzt,)h(um)e(den)g(Nagle)g(Algo-)382 3361 y(rithm)m(us)685 +3328 y Fg(8)750 3361 y Fp(auszusc)m(halten.)40 b(Abgesehen)25 +b(da)m(v)m(on)g(wird)g(der)g(So)s(c)m(k)m(et)g(mit)f(einer)h +(h\366heren)382 3474 y(Priorit\344t)32 b(v)m(ersehen)f(TC_PRIO_INTERA)m +(CTIVE.)382 3636 y(Dem)98 b(So)s(c)m(k)m(et)h(des)f(prim\344ren)h +(Ger\344tes)g(wird)f(hingegen)i(die)e(Priorit\344t)382 +3749 y(TC_PRIO_BULK)63 b(zugewiesen.)138 b(Die)62 b +(Priorit\344tseinstellungen)j(hab)s(en)e(auf)382 3862 +y(das)40 b(V)-8 b(erhalten)42 b(des)e(Netzw)m(erksubsystems)g +(allerdings)h(n)m(ur)g(dann)g(Ein\035u\377,)j(w)m(enn)382 +3975 y(CONFIG_NET_SCHED)63 b(b)s(ei)e(der)g(Compilierung)j(des)d +(Kernels)g(angegeb)s(en)382 4088 y(wurde.)41 b(Diese)28 +b(Priorit\344t)j(wird)e(auc)m(h)h(im)f(TOS-F)-8 b(eld)30 +b(der)f(IP-P)m(ak)m(ete)i(w)m(eitergereic)m(h)m(t)382 +4201 y(und)g(k)m(\366nn)m(te)g(v)m(on)g(der)g(Netzw)m(erkinfrastruktur) +h(v)m(erw)m(endet)g(w)m(erden.)382 4537 y Fj(5.3)130 +b(Drb)t(dsetup)382 4793 y Fo(5.3.1)112 b(K)m(on\034guration)382 +5015 y Fp(Bev)m(or)25 b(ein)g(DRBD-Ger\344t)g(v)m(erw)m(endet)i(w)m +(erden)f(k)-5 b(ann,)26 b(m)m(u\377)g(es)e(k)m(on\034guriert)j(w)m +(erden.)p 382 5076 1196 4 v 486 5130 a Ff(8)520 5162 +y Fe(Der)35 b(Nagle)h(Algorithm)n(us)e(v)n(erz\366gert)i(kleine)f(P)n +(ak)n(ete)g(\(